【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}")