目录
简介:
有的人 是因为上司需要他做接口测试,有的是开发要他做接口测试,有的则是自发的觉得自己的负责的版本接口都需要测一下,保证接口的稳定,纵使刷了一遍又一遍的接口,没有找到bug,但是我们能收获的是我们担起我们对整个项目的责任与保证,我们对我们项目信心,我们对项目结构的熟悉。
目的:业务简单,要输入的数据量多的接口,我们可以使用数据驱动的方式快速的进行测试
思路分析: 对于接口,如果我们能预期到它的结果,那么我们就能事先设计好输入和预期的输出,使用数据驱动的自动化方式进行接口测试。在这里结束的数据驱动方式有三种
一,python数据驱动(也可引用unittest的@ddt进行)
1,写好csv数据,如果业务复杂,响应码以及响应内容等数据也可放入我们的数据里面
2,从代码上读取我们的数据
#获取data.csv上的数据 #获取[['username1', 'password1'], ['username2', 'password2']... def getCSVData(): value_rows = [] with open('data.csv',encoding='UTF-8') as file: file_csv = csv.reader((file)) next(file_csv) for r in file_csv: value_rows.append(r) return value_rows
3,使用for X in listX 的方式,进行进行批量的发送注册请求
4,观察结果,如果有响应信息有误会被断言结果捕获到,进行报错,都通过就不会报错,建议挑几个接口响应信息进行查看,以局部代替整体,如果挑的几个都通过了,那么就可以说这次的接口测试是OK的。
4,代码如下:
import csv
import requests
#获取data.csv上的数据
#获取[['username1', 'password1'], ['username2', 'password2']...
def getCSVData():
value_rows = []
with open('data.csv',encoding='UTF-8') as file:
file_csv = csv.reader((file))
next(file_csv)
for r in file_csv:
value_rows.append(r)
return value_rows
def register():
for item in getCSVData():
url = 'http://127.0.0.1:1080/cgi-bin/login.pl'
headers ={
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Content-Length': '276',
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': 'MSO=SID&1668092819',
'Host': '127.0.0.1:1080',
'Origin': 'http://127.0.0.1:1080',
'Referer': 'http://127.0.0.1:1080/cgi-bin/login.pl?username=&password=&getInfo=true',
'sec-ch-ua': '"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': "Windows",
'Sec-Fetch-Dest': 'frame',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
body = {
'username': item[0],
'password': item[1],
'passwordConfirm': item[1],
'firstName': '江',
'lastName': '云',
'address1': '深圳宝安',
'address2': '深圳',
'register.x':'76',
'register.y':'7'
}
print(item[0],item[1])
response = requests.request('POST',headers=headers,url=url,data=body)
assert 'Welcome to Web Tours' in response.text,'注册失败哦,找找原因吧'
print(response.text)
if __name__ == '__main__':
register()
二、jmeter数据驱动
1,设置好单个接口,包括接口的组成,请求头,入参,断言(响应码,响应内容,响应时间...),观察结果树,如果是接口关联,还需要设置好思考时间。
2,使用设置csv方式获取csv数据,如果数据量不大,且数据只有一种的情况下,也可使用“用户定义的变量”组件来进行数据驱动
数据内容
添加csv数据驱动配置
配置CSV设置
修改入参,通配符获取csv的数据
3,线程组下或循环控制器下设置循环的次数,多少个用例就循环多少次
4,点击发送请求,然后看是否都断言成功了,请求的数据是否分别是自己csv上的数据。我这边校验结果都是正确的,如下
三、postman数据驱动
1,设置好单个接口(URL,请求头,请求体,断言)
2,试着请求一下,如果单个请求可以成功,则可以考虑添加数据驱动了3,需要进行不断替换的入参,都改为{{csv对于的数据名}}的形式 ,断言的数据也可以从csv上去
获取
4,选择对应的测试集三角形上点击 – run collection – 设置循环次数、接口间隔、选择保存测试数据的CSV文件 – 勾选需要运行的接口 – run
选择导入数据文件后,最好预览确认数据是否正确
5,点击运行,可查看执行结果,理想结果是都OK
Python、Jmeter、Postman数据驱动篇结束,欢迎观看我主页上的其它技术篇