python/jmeter/postman数据驱动

目录

一,python数据驱动

二、jmeter数据驱动

三、postman数据驱动


简介:
有的人 是因为上司需要他做接口测试,有的是开发要他做接口测试,有的则是自发的觉得自己的负责的版本接口都需要测一下,保证接口的稳定,纵使刷了一遍又一遍的接口,没有找到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数据驱动篇结束,欢迎观看我主页上的其它技术篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值