Httprunner v3.x生成Allure格式HTML报告
本文档记录初次使用Allure生成报告的过程和踩坑。
先安装Allure,下载并配置环境。
安装参考文档:
安装好后步骤开始:
步骤一
用Allure生成report报告用数据,生成的报告数据包含2个文件:1个json文件、1个txt文件。切换到D:\Python\test>下执行:
hrun test_post_api.json --alluredir=report
步骤二
用Allure创建刚才生成的report报告用数据,生成report2文件夹,-o 表示指定生成报告的文件夹,-c 表示在生成报告之前先清理之前的报告目录。
allure generate D:\Python\test\report -o D:\Python\test\report2 -c
然后使用默认浏览器打开allure报告,即可查看。
allure open D:\Python\test\report2
结束
生成成功的效果:
【常见问题】
1、若是报错提示 OSError: [WinError 6] 句柄无效,请参考如下解决:
步骤:
①将一些代码添加到D:\Python\Lib\site-packages\httprunner路径下的runner.py文件
②在文件开头import colorama,sys
③找到test_start方法,并加入如下代码:
以下代码供复制:
1 #句柄错误解决方法 2 def setup_ansi_colors(suppress_colors): 3 convert_ansi_codes_to_win32_calls = False 4 if os.name == 'nt': 5 # Only need to init colorama with 'convert=True' when app is called 6 # from 'cmd.exe', 'powershell' or 'git-bash via VS Code' 7 convert_ansi_codes_to_win32_calls = 'TERM' not in os.environ or \ 8 os.environ.get('TERM_PROGRAM', None) == 'vscode' 9 if 'CONVERT_ANSI_CODES_TO_WIN32_CALLS' in os.environ: 10 # explicit option is useful for cases when automatic guess fails (e.g. for Eclipse IDE) 11 convert_ansi_codes_to_win32_calls = os.environ.get('CONVERT_ANSI_CODES_TO_WIN32_CALLS').lower() in ( 12 'true', '1') 13 colorama.init(strip=suppress_colors, convert=convert_ansi_codes_to_win32_calls)
2、若是发现返回体body中的中文编码失败了,请参考如下解决:https://blog.csdn.net/zjxht62/article/details/116305944
原因是json.dumps序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False
步骤:
①将一些代码添加到D:\Python\Lib\site-packages\httprunner路径下的client.py文件
②找到log_print方法,并修改如下代码:
以下代码供复制:
#修改了第37行(client.py文件中的第37行)代码 def log_print(req_or_resp, r_type): msg = f"\n================== {r_type} details ==================\n" for key, value in req_or_resp.dict().items(): if isinstance(value, dict): value = json.dumps(value, indent=4,ensure_ascii=False)
【allure语法】
hrun test1.json test2.json test3.json --alluredir=report #表示在report文件夹中分别生成三个用例对应allure测试用数据
$ hrun --alluredir allure-results --clean-alluredir # 当用例格式为py文件时,可以用“pytest”替换“hrun”,作用相同 --alluredir:生成allure报告的原始数据 allure-results:原始数据的保存位置 --clean-alluredir:清除allure-results历史数据
$ allure generate allure-results -o allure-report -o 指定生成报告的文件夹 -c 在生成报告之前先清理之前的报告目录
allure open allure-report #启动默认浏览器打开Allure测试报告