下载 allure 第三方库
第三方库名称为 allure-pytest!
配置环境变量
解压完成后到达bin目录下复制地址
在环境变量中双击path添加此地址配置环境变量
操作步骤
导入 :
import allure,os
import pytest
from jsonpath import jsonpath
写入代码 :
allure.dynamic.feature("项目名称【swsq】") # 自定义场景名称为 ..... <1>
allure.dynamic.title("{case_id}_{case_name}".format(case_id=data[0], case_name=data[4])) # 使用,format方法自定义标题名称 <2>
allure.dynamic.description(f'请求接口URL:{url} \n 请求方式:{method} \n 请求参数:{params} \n 预期结果:{expected_result} \n 实际结果:{r.json}') # 自定义右侧参数<3>
上方代码最终在H5报告中的位置。
搭配使用pytest:
# 将 excel 中从第二行开始所有的数据放到 data_test 中
data_test = list(sheet.iter_rows(values_only=True,min_row=2))
# class Test(): 定义了一个名为Test的类。
class Test():
"""项目名称【swsq后台】"""
# list(range(len(data_test))) 生成一个与data_test长度相同的列表 例如data_test有3个元素,那么此列表将为[0, 1, 2]。
@pytest.mark.parametrize("index",list(range(len(data_test))))
# test_admin_api方法会对data_test列表每一个元素(或索引)运行一次。
def test_admin_api(self, index):
# index来从data_test中获取具体的测试数据
data = data_test[index]
jsonpath 语法:
actual = jsonpath(JSON数据, 想要拿到的数据)
示例:
# JSON 数据
a = {'status':'ok','message':'登录成功','token':'1234567'}
# (JSON数据,‘使用$.方法拿去需要数据’)
`$. 用于从根对象开始定位具体的属性或值,而 $.. 用于递归地查询整个 JSON 对象并返回所有匹配的属性或值。`
b = jsonpath(a,'$.status')
print(b)
最终结果:
使用 assert 断言:
语法: assert … == …
例如上方例子 :
# 实际请求结果
assert actual,f"请求结果中不存在【{left}】"
# 如果请求结果中有token==true的结果说明与预期结果一致 如果没有 在页面中展示请求结果不存在...
# continue:
如果条件成立 continue被用于在特定条件满足时跳过当前迭代,直接进行下一次迭代 知道条件不成立。
生成测试报告:
if __name__ == '__main__':
# 生成测试数据
pytest.main(["-sq",__file__,'--alluredir=./report'])
# 生成测试报告
os.system('allure generate ./report -O ./report-html --clean')
上述代码会在当前文件夹下新建一个名为 allure-report 和 名为 report 的两个文件夹
allure-report 文件夹下的index.html文件是H5报告
必须在IDE中打开