Python由于可移植性好、第三方库丰富、上手简单而成为一种便捷高效的接口自动化测试工具。使用python向接口发送请求,一般包含以下步骤:
1. 请求的组装:请求信息一般包含接口的URL,以及一些其他可能需要的信息,比如headers,post请求需要用的data等;
2. 请求的发送:请求组装好后进行请求的发送,一般分为GET和POST方法,如果需要向接口传输数据,可以在data中传输,并获取返回数据;
3. 响应的解析:接收返回的数据并进行解析。
Python实现了成熟的请求方法,目前新版的python3版本较好地支持第三方库requests,灵活组装请求,发送请求,获取响应信息,支持JSON、文件等多种数据传输格式。
安装好requests后,导入,并简单组装一个get请求:
#导入requests包
import requests
#接口URL,这里以一个虚拟网址为例
url = ‘http://test.org’
response = requests.get(url)
print(response.txt)
带有数据的post请求:
import requests
url = "http://test.org/post"
data = '''{
"name": "张三",
"age": 18
}'''
response = requests.post(url=url, data=data)
print(response.text)
在日常接口测试中,经常需要设计反向案例验证接口对于异常场景的覆盖,比如对特殊字符的处理,依赖人工输入验证比较低效,利用python读取特殊字符集的账号,传入请求数据中,即可快速完成特殊字符集的接口测试,满足多种场景的测试。
利用python的csv模块读取储存字符集的csv文件的方法如下:
import csv
with open('data.csv', 'r') as f:
reader = csv.reader(f)
print(type(reader))
for row in reader:
print(row)
下面以简单的汇款场景为例,进行特殊字符集的接口测试。首先构造接口的输入数据,以字典格式定义;读取特殊字符集,以列表储存;接下来就可以构造请求内容:遍历列表,替换账户名中的字符为特殊字符,发起请求,读取响应结果。具体步骤和代码如下:
import requests, csv
url = ‘http://kuahangzhuanzhang.org/post’
#构造输入数据
data = {
“sendaccnm”: “王小林”,
“sendaccno”: “1234567890”,
“sendbkno”: “103100000026”,
“recvaccnm”: “马小腾”,
“recvaccno”: “2345678901”,
“recvbkno”: “105100000017”
}
#定义列表,读取特殊字符集文件,列表储存
li = []
with open('data.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
li.append(row[0])
#替换data中的数据,产生带有特殊字符的户名数据并发起请求
for i in range(len(li)):
new_accnm = data.get("sendaccnm").replace(data.get("sendaccnm")[1],li[i])
data["sendaccnm"]=new_accnm
print(data) #可打印一下替换后的数据
response = requests.post(url=url, data=data)
print(response.text) #打印响应数据

请求数据中,原账户名都已经被替换成带有特殊字符的账户名,对于生僻字、少数民族姓名、外国人姓名等含特殊字符的场景,实现了特殊字符的接口自动化测试。

公众号FunTester,非著名测试开发,文章记录学习和感悟,欢迎关注,交流成长。
FunTester热文精选
-
Selenium4 IDE,它终于来了 -
基于DOM的XML文件解析类 -
如何成为全栈自动化工程师 -
绑定手机号性能测试 -
固定QPS压测模式探索 -
测试为何会错过Bug -
自动化测试生命周期 -
固定QPS压测初试 -
Gradle+Groovy基础篇 -
Gradle+Groovy提高篇

本文分享自微信公众号 - FunTester(NuclearTester)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/3973795/blog/4784084