自项目成熟后,一直都是使用 BeautifulSoap 和 Allure 交替查看测试报告。每天查看那么多次,但对他们却是一知半解。
11号闲来无事,找了一些小练习研究 Allure 的使用,在使用 Pytest 命令输出报告时,一直不得解,每个参数表示什么意思、allure 的数据如何生成、报告路径又是
怎样定义的。
在输出报告时,有两种方式:
第一种方式
$ pytest test_baidudemo.py -s -q --alluredir=./result/
# 该命令表示执行 test_baidudemo.py 文件,-q:静默输出方式,,即简要输出信息;-s:显示调试或打印的内容; 最后将allure结果数据保存到指定目录
$ allure serve ./result
Generating report to temp directory...
Report successfully generated to C:******AppDataLocalTemp5370638618015012312allure-report
Starting web server...
2021-01-12 23:43:54.179:INFO::main: Logging initialized @4264ms to org.eclipse.jetty.util.log.StdErrLog
Server started at <http://172.*.*.*:6313/>. Press <Ctrl+C> to exit
# 打开allure报告时,需要打开allure服务,serve 生成在线报告,保存在默认的临时路径下。自动调用默认浏览器显示报告
# 有可能会调用IE浏览器,无法显示,将地址复制后在谷歌中打开即可
第二种方式
$ pytest test_baidudemo.py -s -q --alluredir=./result/
# 生成结果数据,json 格式,保存到 result/ 文件中
$ allure generate --clean ./result/
"""
将结果数据生成 html 报告,allure 会在当前目录检查是否有 allure-report 文件,
没有的话会自动生成 allure-report 文件,并将报告内容保存在这个文件夹下面。--clean 参数,清除历史数据
前面的 generate ./result/ ,generate 后面一定要跟保存结果数据的路径,allure 才能取到数据,正确的生成报告,否则报告中数据显示 NaN%
或者使用命令 allure generate ./result/ -o ./report/ --clean
-o 参数是将报告内容保存到指定的文件夹下,此时 allure 不再保存到默认的目录下面
注意: 若是使用了参数化方式,生成 allure 报告时,不能用管道符将前后的命令连接起来使用,容易发生错误。
$ pytest test_baidudemo.py -s -q --alluredir=./result/ | allure generate ./result/ -o ./reports/ --clean
# 此方式容易报错,比如,第一个用例执行完,命令就进入生成报告环节,但第二个用例尚未开始,此时系统会报错,导致执行失败。
部分错误信息如下
OSError: [Errno 22] Invalid argument
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='cp936'>
OSError: [Errno 22] Invalid argument
"""
所以比较好的执行方式是将命令拆开执行
$ pytest test_baidudemo.py -s -q --alluredir=./result/
$ allure generate ./result/ -o ./reports/ --clean