Allure 是一款轻量级且灵活的开源测试报告生成框架,Pytest 是一个功能强大且易于使用的 Python 测试框架,利用他们我们可以生成一个可视的页面化的html报告,由于网络上只给出了在终端上启动的命令,却很少看到可以直接在.py页面可以直接执行的代码,碰巧有人朋友问到这一点,我特意去查了一下,展示一下成果。
Allure+pytest生成HTML报告的核心流程分为环境准备、脚本设计、生成报告三个阶段,下面我来讲一下详细的步骤:(如果说环境对的话,直接看第二阶段)
一、环境准备
使用allure之前我们需要通过terminal安装allure和allure-pytest。
1、命令:pip install pytest
2、命令:pip install pytest allure-pytest
二、脚本设计
我们要保证装载着测试用例的脚本的命名方式为test_开头(_test结尾),用例方法名也必须是以test_开头(_test结尾),这样能让pytest自动识别测试用例。
pytest 是 Python 最流行的测试框架之一,以简洁灵活著称,支持单元测试、集成测试和复杂的功能测试。其核心优势在于易用性和可扩展性,能通过插件机制满足多样化测试需求
注意事项:
1、目录结构
2、封装方法
3、装载用例的文件名和用例名必须为test_开头,或者_test结尾
4、添加allure增强特性:
@allure.epic/@allure.feature/@allure.story: 分层分类测试用例,便于报告中的模块化展示
模块(Feature)、场景(Story)、优先级(Severity)
with allure.step("描述") 将测试逻辑分解为多个步骤,报告中会展示详细流程
当然不添加也不影响
三、生成报告
使用pytest.main()去执行用例,我们给main()里面加上一个参数[“-v”,”--alluredir=./temps”],目的是为了让执行测试用例所生成的报告定向生成在temps目录下,"-v":--verbose的简写,输出详细的测试结果(显示每个测试用例的名称和状态)。我们使用os.system("allure generate ./temps -o ./report --clean")来生成html报告,而其中os.system():执行系统的命令。allure generate:生成报告的命令。./temps:输入目录(pytest 存放测试结果数据的目录,)。-o ./report:输出目录,生成的 HTML 报告将保存在 ./report。
--clean:生成报告前清理旧的报告文件。
重要事项:
1、执行时,pytest自动找用例,如果提示找不到用例,可以试着改一下你的类名。
2、执行完毕后,会生成3个新的目录:
第一个目录是:.pytest_cache是支持pytest的包
第二个目录是:report是生成报告的包
第三个目录是:temps是装载着测试用例执行结果和数据的文件
2、html报告在report中,文件名叫index.html,打开html可以使用右上角的浏览器快 捷方式,电脑上有才能使用,建议用电脑自带的浏览器
3、打开html文件后,详细信息都会显示;
优势:
1、高度可视化与交互性
图表展示:自动生成趋势图、环境信息、优先级分布等图表,直观呈现测试结果。
交互式操作:支持按模块(Feature)、场景(Story)、优先级(Severity)等标签快速过滤用例。
步骤级详情:逐层展开测试步骤,查看每个操作的耗时、日志及附件(如截图、请求数据)。
2、无缝集成与扩展性
与pytest深度兼容:通过 @allure 注解直接增强现有测试脚本,无需重构代码。
插件生态:支持与 pytest-xdist(并行测试)、pytest-cov(覆盖率统计)等插件协同工作。
CI/CD友好:生成的静态报告可直接嵌入Jenkins、GitLab等工具,实现自动化测试流水线。
3、增强测试可维护性
步骤分层:使用 @allure.step 拆分复杂操作为原子步骤,便于后续维护和复用。
自定义分类:通过 categories.json 重新定义缺陷类型,适配团队工作流程。
4、复杂功能验证
场景:电商下单流程涉及购物车、支付、库存等多个模块。
实现:用 @allure.feature 标记各模块。失败时附加接口响应、数据库查询结果。
价值:开发直接根据报告中的日志和附件修复问题,减少跨团队沟通。
最后,通过Allure与pytest的整合,我们能够将自动化测试结果转化为高度可视化的HTML报告,直观呈现用例执行细节、失败原因及调试信息,可以方便我们高效统计自动化测试结果。