问题描述:
- 环境:win10 + python 3.8 + pytest 6.2.5 + allure 2.9.45
- 问题复述:
在学习 fixture 的时候,我在 conftest 里定义了一个 session 级别的 fixture,通过 os.system(f"allure generate {result_path} -o {report_path} --clean") 语句自动生成 allure 报告。
但是在实际运行的时候发现:通过该方法生成的 report 中,会漏掉最后一条被执行的用例,而当我手动执行相同的 allure 命令时却可以统计到完整数量的用例。
请问是什么原因导致的(* ̄(エ) ̄)
以下截图为使用同一份 result ,两次生成 report 的结果。
异常场景下截图(通过 fixture 执行 allure generate ../result -o ../report --clean
命令):
正常场景下截图(通过控制台 执行 allure generate ../result -o ../report --clean
命令):
相关代码(包括log文件,都要使用markdown代码格式,)
@pytest.fixture(scope="session", autouse=True)
def to_report():
yield
result_path = r"../result"
report_path = r"../report"
logging.debug("【开始生成测试报告】")
os.system(f"allure generate {result_path} -o {report_path} --clean")
logging.debug("【测试报告生成成功】")
补充信息:在上面通过 fixture 自动生成报告的前提下,当我使用分布式执行用例时发现:同时使用了几个核,最终生成的 report 就会少几条用例。
原因以及解决方式(没有可以写无):
原因:未知
解决办法:
办法一:将该代码块中的语句放到 pytest_sessionfinish;pytest_terminal_summary 这两个hook中
办法二:使用jenkins的allure插件生成报告
办法三:通过批处理脚本等方式执行报告生成命令