login.json文件
'''
{
"item":
[
{
"requests":
{
"url": "http://******/loginByPwd",
"body":
{
"token": "",
"mobile": "******",
"pwd": "******"
}
},
"response":
[
{"code":"1000"}
]
},
{
"requests":
{
"url": "http://******/loginByPwd",
"body":
{
"token": "f6720748de8f498db37507eabc4bca8d",
"mobile": "",
"pwd": "******"
}
},
"response":
[
{"code":"1001"}
]
},
{
"requests":
{
"url": "http://******/loginByPwd",
"body":
{
"token": "f6720748de8f498db37507eabc4bca8d",
"mobile": "******",
"pwd": ""
}
},
"response":
[
{"code":"1001"}
]
}
]
}
'''
json_read.py文件
'''
import json
def read_json():
return json.load(open('login.json','r'))['item'] # 对文件的处理,load不能加s
# 返回的是数据是列表,里面套字典,每个字典有请求参数和响应数据
'''
test_json_login.py
'''
import pytest
import requests
from pytest_study.json_read import * # 和json_read.py文件在同一目录下
@pytest.mark.parametrize('data', read_json())
def test_json_login_01(data):
r = requests.post(url=data['requests']['url'], data=data['requests']['body']) # 参数data和json代表意义不一样
assert r.json()['code']==data['response'][0]['code']
if __name__ == '__main__':
pytest.main(['-s', '-v', 'test_json_login.py'])
"""
1 先有一个json文件写好的用例数据(格式为一个大字典,里面套列表,列表套字典(这个字典为各用例数据))
2 取到json文件中数据,并返回列表格式
3 利用pytest中的parametrize参数化,对列表中的每个字典进行循环取值
4 利用requests库对获取到的接口进行请求
5 判断用例是否与接口返回数据一致
6 执行
总结:把用例都写在了一个文件中,数据进行了分离;然后利用pytest中的parametrize参数化对整个文件的用例进行循环并执行
"""
"""
1 json库的操作
json.dumps() 将python对象编码成Json字符串
json.loads() 将Json字符串解码成python对象
json.dump() 将python中的对象转化成json储存到文件中
json.load() 将文件中的json的格式转化成python对象提取出来
"""
'''