pytest接口自动化-参数化之json文件

大体分为以下四步
目录:
1.通过读取.json文件来达到数据分离
2.使用pytest中的parametrize参数化来读取json文件的内容
3.通过requests来指定请求方法,请求参数等
4.通过返回结果来判断json文件中的response是否包含(或者相等)
5.json数据

一、通过读取.json文件来达到数据分离

# 读取.json文件
# 由于需要的数据在item下面一层级,所以在读取时,需要指定位置
# 当然你也可以根据自己喜好来自定义json层级,条件是你要符合json数据的规则,否则就会报错
def read_json():
    return json.load(open('json.json','r'))['item']

二、使用pytest中的parametrize参数化来读取json文件的内容

# 通过pytest的parametrize参数化来使用read_json()里面的内容
@pytest.mark.parametrize('data',read_json())

三、通过requests来指定请求方法,请求参数等

def test_json_login(data):
    # 通过requests来指定请求方法
    r = requests.post(
        # 通过指定read_json()里面对应的url
        url=data['request']['url'],
        # 通过指定read_json()里面对应的body
        json=data['request']['body'])
    print(r.json())

四、通过返回结果来判断json文件中的response是否包含(或者相等)

# 通过判断返回的json数据判断read_json()里面response内容
    # 通过使用assert来断言判断是否满足预期结果
    assert r.json()['msg'] in data['response']['msg']

五、json数据,建一个.json文件,里面装需要用到的接口数据即可

{
	"item": [{
		"request": {
			"url": "http://xxx:1111/sys/sso/login",
			"body": {
				"account": "pos",
				"passwd": "2"
			}
		},
		"response": {
			"msg": "success"
		}
	}]
}

六、整体代码

# 导入json库,在读取json文件是需要用到json.load
import json
# 导入pytest库,需要用到参数化parametrize
import pytest
# 导入requests库,需要用到请求方法,请求参数等内容
import requests

# 读取.json文件
# 由于需要的数据在item下面一层级,所以在读取时,需要指定位置
# 当然你也可以根据自己喜好来自定义json层级,条件是你要符合json数据的规则,否则就会报错
def read_json():
    return json.load(open('json.json','r'))['item']

# 通过pytest的parametrize参数化来使用read_json()里面的内容
@pytest.mark.parametrize('data',read_json())
def test_json_login(data):
    # 通过requests来指定请求方法
    r = requests.post(
        # 通过指定read_json()里面对应的url
        url=data['request']['url'],
        # 通过指定read_json()里面对应的body
        json=data['request']['body'])
    # 通过判断返回的json数据判断read_json()里面response内容
    # 通过使用assert来断言判断是否满足预期结果
    assert r.json()['msg'] in data['response']['msg']
    # 打印出返回的结果
    print(r.json())

# 最后执行
if __name__ == '__main__':
    pytest.main('-s','-v','test_json_login.py')
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值