【Python_pytest】pytest-html 生成测试报告
pytest-html
# pytest插件生成一个HTML测试报告。 pip install pytest-html
使用
# 添加命令行参数 --html=report.html 和 --html=report.html --self-contained-html if __name__ == "__main__": pytest.main(["test_debug.py", # 测试用例 "--html=../report/report0414.html", # 生成测试报告 生成assert存放的css文件和html文件 "--self-contained-html", # 把css样式合并到html里 仅生成html文件
])
# 运行中的日志显示ASCII颜色 if __name__ == "__main__": pytest.main(["test_debug.py", # 测试用例 "-v", # -v 显示详细信息, -q 不输出环境信息, -s 显示程序中的打印和日志 "--html=../report/report0414.html", # 生成测试报告 "--self-contained-html", # 把css样式合并到html里 "--color=yes", # pytest 写入输出颜色 ])
Allure
手动安装
下载地址: https://github.com/allure-framework/allure2/releases
解压后将bin目录添加到path 并执行目录下 allure.bat 文件
# 安装依赖包 pip install allure-pytest
遇到的问题
1、在py文件中执行执行测试用例时,未生成测试报告
if __name__ == "__main__": pytest.main(["test_debug.py", # 测试用例 "-q", # -v 显示详细信息, -q 不输出环境信息, -s 显示程序中的打印和日志 "--html=../report/report0414.html", # 生成测试报告 "--self-contained-html", # 把css样式合并到html里 ])
方法一:
原因:pytest没有main函数,会根据目录执行复核pytest规则的测试用例
解决:将pycharm 的测试运行程序改为 unittest
2、使用 loguru 插件生成的日志,在生成html报告时 中文乱码
解决方案:将loguru 日志控制台输出关闭并添加logging输出到控制台
# 删除以前添加的处理程序并停止向其接收器发送日志。 logs.remove(handler_id=None) # 清除之前的设置 # 集成loguru到控制台(即html报告) class PropogateHandler(logging.Handler): def emit(self, record): logging.getLogger(record.name).handle(record) logs.add(PropogateHandler(), format="{time:YYYY-MM-DD HH:mm:ss} | {message}")