pytest 接口测试
pytest
核心重点
读取excel(xfile --> read)
函数循环执行( @pytest 装饰器,自动解析,一个个单独执行)
接口关联(Template 处理参数变量)
pytest 是什么
.py文件名 用 test_开头,函数用 test_开头,运行的时候,pycharm会自动用pytest模式去执行代码!
处理excel 文件
点击获取excel 文件
核心思想: 把excel 文件的内容转化为 python的字典数组
可以先阅读 python函数 函数
注意: 需要xToolkit 只能读取 xls
from xToolkit import xfile
test_res = xfile.read('test.xls').excel_to_dict('Sheet1')
print(test_res)
print(test_res[0]['接口URL'])
for data in test_res:
print(data['接口URL'])
使用pytest 自动循环执行
import requests
from xToolkit import xfile
import pytest
# 读取excel 文件,生成字典数组
test_res = xfile.read('test.xls').excel_to_dict('Sheet1')
print(test_res)
# print(test_res[0]['接口URL'])
#
# for data in test_res:
# print(data['接口URL'])
# 自动循环执行; data:传递的参数,test_res: 需要解析的列表
@pytest.mark.parametrize('data', test_res)
def test_excute(data):
res = requests.request(method=data['请求方式'],
url=data['接口URL'])
print(res.url)
if __name__ == '__main__':
pytest.main(['-s', 'test2.py'])
pytest.main(["-vs"])
token
template
举例: 测试购物车,需要token,但是token每次都会变
Template会自动拿字典里的value去替换掉与花括号单词相同的key
接口封装
from string import Template
import requests
from jsonpath import jsonpath
from xToolkit import xfile
import pytest
# 读取excel 文件,生成字典数组
test_res = xfile.read('test.xls').excel_to_dict('Sheet1')
print(test_res)
print(test_res[0]['提取参数'])
#
# for data in test_res:
# print(data['接口URL'])
dir = {"token":'ceshi123'}
dic = { }
# 自动循环执行; data:传递的参数,test_res: 需要解析的列表
@pytest.mark.parametrize('data', test_res)
def test_excute(data):
url = data['接口URL']
if "$" in url:
# url = Template(url).substitute(dic)
url = Template(url).substitute(dir)
print(url)
res = requests.request(method=data['请求方式'],
url=url)
print(res.url)
if data["提取参数"]:
print([data["提取参数"]])
# key : excel 文档里面的提取参数 ; value: url 返回获取到的
# tq = jsonpath.jsonpath(res.json(), '$..' + data["提取参数"]) # $..token $..good_id
# dic[data["提取参数"]] = tq[0]
if __name__ == '__main__':
pytest.main(['-s', 'test2.py'])
pytest.main(["-vs"])