一、框架介绍
曾几何时我们对unittest框架+htmlrunner这套测试框有着满载回忆,随着时代的变迁和技术更新,unittest框架已经褪去曾经的辉煌停止更新,htmlrunner的测试报告也还是一如既往简陋不堪,在这个内卷比较严重的大环境下,我们一份眼花缭乱、耳目一新、高端大气的测试报告可能会带你度过当前的艰难岁月。
二、安装方法
2.1、pytest 安装
- 安装命令: pip install Pytest
3.2、 allure安装
- allure-pytest 插件安装:pip install allure-pytest
- allure工具安装:下载allure工具解压并设置环境变量
- allure工具下载工具提取码:1tue
三、框架代码
#!/usr/bin/python
# -*- coding: utf-8 -*-
#@Users: LiMu
#@Files:pytest_allrure.py
#@Times: 2022/3/11
#@Software:PyCharm
import os
import allure
import pytest
#feature、story、title在测试报告中文本是以层级展示
#casesum是用例列表,例如[ 用例壹, 用例贰, 用例叁 ]
@allure.feature('某应用测试用例')
class TestCase(object):
@pytest.mark.parametrize("casexx", casesum)
def test_case(self,casexx):
allure.dynamic.story(casexx.get("CaseModel"))
allure.dynamic.title(casexx.get("CaseName"))
allure.dynamic.severity(casexx.get("level"))
#测试步骤及断言,step可以看成测试报告TestBody的标题,attach则为TestBody打印内容.
with allure.step("操作步骤:"):
allure.attach(casexx.get("Steps"))
with allure.step("测试断言:"):
if casexx.get("Asserts")[0] == casexx.get("Asserts")[1]:
allure.attach("用例执行通过!","测试结果:")
else:
allure.attach("用例执行失败!", "测试结果:")
allure.attach(casexx.get("Asserts")[1],"实际返回结果:")
assert casexx.get("Asserts")[0] == casexx.get("Asserts")[1]
if __name__ == '__main__':
#pytest.main执行代码并生成测试报告数据至allure-result文件
pytest.main(["-s","pytest_allrure.py","--alluredir", "../test_report/allure-result"])
#使用allure工具生成测试报告
os.system("allure generate ../test_report/allure-result/ -o ../test_report/allure-report --clean")
#将测试报告中的history复制至测试报告数据文件,不进行该操作首页趋势图取不到数据
os.system(r"xcopy E:\Pyfiles\test_report\allure-report\history E:\Pyfiles\test_report\allure-result\history /E /Y /I")
四、测试报告
执行测试代码后就会生成测试数据文件allure-result和测试报告文件allure-report,在allure-report下用游览器打开文件index.html就可以看到你的测试报告啦,当然这样打开测试报告特别low,我们可以把框架集成在Jenkins,可以在Jenkins打开汇自动调用游览器,也可以用Tomcat或者Nginx部署一个环境打开测试报告,同时还可以使用公网IP或者域名进行广域网访问。