目录
3.3 pytest-html 报告优化(添加 Description)
3.4pytest-html 报告优化 nodeid 中文显示
第 3 章 HTML 报告生成
生成 html 报告,这里介绍了 2 个框架
1.pytest-HTML
2.allure2
3.1-pytest-html 生成 html 报告
pytest-HTML 是一个插件,pytest 用于生成测试结果的 HTML 报 告。兼容 Python 2.7,3.6
pytest-html
1.github 上源码地址 【https://github.com/pytest-dev/pytest-html】
2.pip 安装 > pip install pytest-html
3.执行方法
> pytest --html=report.html
html 报告
1.打开 cmd,cd 到需要执行 pytest 用例的目录,执行指令:pytest —html=report.html
2.执行完成后,在当前目录会生成一个 report.html 的报告文件, 显示效果如下
指定报告路径
1.直接执行”pytest —html=report.html”生成的报告会在当前 脚本的同一路径,如果想指定报告的存放位置,放到当前脚本的同一目 录下的 文件夹里
2.如果想指定执行某个.py 文件用例戒者某个文件夹里面的所有用 例,需加个参数。
需要更改运行规则,进入文件目录:pytest test_css.py --html=./report/report.html
报告独立显示
上面方法生成的报告,css 是独立的,分享报告的时候样式会丢失, 为了更好的分享发邮件展示报告,可以把 css 样式合并到 html 里
> pytest --html=report.html --self-contained-html
显示选项
默认情况下,“ 结果”表中的所有行都将被展开,但具测试通过 的行除外 Passed。 可以使用查询参数自定义此行 为:?collapsed=Passed,XFailed,Skipped。
更多功能 1.更多功能查看官方文档 https://github.com/pytest-dev/pytest-html
2.2-html 报告报错截图+失败重跑
做 web 自动化的小伙伴应该都希望在 html 报告中展示失败后的截 图,提升报告的档次,pytest-html 也可以生成带截图的报告。
conftest.py
1.失败截图可以写到 conftest.py 文件里,返样用例运行时,叧要 检测到用例实例,就调用截图的方法,并且把截图存到 html 报告上
2.用例部分如下:
报告展示
cmd 打开,cd 到用例的目录,执行指令
> pytest --html=report.html --self-contained-html
失败重试
失败重跑需要依赖 pytest-rerunfailures 插件,使用 pip 安装就行
> pip install pytest-rerunfailures
用例失败再重跑 1 次,命令行加个参数--reruns 就行了
> py.test --reruns 1 --html=report.html --self-contained-html
关于 reruns 参数的 2 个用法 --reruns=RERUNS RERUNS 参数是失败重跑的次数,默认为 0 --reruns-delay=RERUNS_DELAY RERUNS_DELAY 是失败后间 隔多少 s 重新执行,时间单位是 s
3.3 pytest-html 报告优化(添加 Description)
pytest-html 测试报告默认是不展示用例描述 Description 内容,之前用 unittest 生成的报告是可以展示用例的描述,也就是 test 开头的用例下三个引 号里面的注释(docstring)内容。 pytest-html 框架是可以修改生成的报告内容的,可以自己添加和删除 html 报 告的 table 内容。
修改报告
pytest-html 官方文档地址https://pypi.org/project/pytest-html/ 可以通过为标题行实现自定义钩子来修改列,下面的示例在 conftest.py 脚本 中使用测试函数 docstring 添加描述(Description)列,添加可排序时间(Time) 列,并删除链接(Link)列:
还可以通过 pytest_html_results_table_row 挂钩删除所有单元格来删除结果。下面的示例从 报表中删除所有测试通过的结果:
import pytest
@pytest.mark.optionalhook
def pytest_html_results_table_row(report, cells):
if report.passed:
del cells[:]
日志输出和附加 HTML 可以通过 pytest_html_results_table_html 挂钩来修改。下面的示例清
空测试通过的日志输出:
import pytest
@pytest.mark.optionalhook
def pytest_html_results_table_html(report, data):
if report.passed:
del data[:]
data.append(html.div('No log output captured.', class_='empty
log'))
添加 Description
通过上面的官方文档,可以自己修改下测试报告,在报告里面添加一列的内容, 添加到第二列,于是修改如下,红色代码全部注释掉
第三个@pytest.mark.hookwrapper,这个在之前测试报告里面添加截图时候,已经写过了, 只需在最后加一句代码即可 report.description = str(item.function.__doc__)
3.4pytest-html 报告优化 nodeid 中文显示
pytest-html 报告中当用到参数化时候,获取用例的 nodeid 里面有中文时候, 会显示[\u6350\u52a9\u6211\u4eec]这种编码(再次声明,这个不叫乱码,这是unicode 编码)
3.5-allure2 生成 html 报告
allure 是一个 report 框架,支持 java 的 Junit/testng 等框架,当然也 可以支持 python 的 pytest 框架,也可以集成到 Jenkins 上展示高大 上的报告界面。
环境准备
1.python3.6
2.windows 环境
3.pycharm
4.pytest-allure-adaptor
5.allure2.7.0
6.java1.8
pytest-allure-adaptor 下载 pip 安装 pytest-allure-adaptor,github 地址 https://github.com/allure-framework/allure-pytest > pip3 install pytest-allure-adaptor
生成 xml 报告 > pytest -s -q --alluredir report
如果不指定路径,默认在当前目录下新建一个 report 目录,当然也 可以指定路径
> pytest -s -q --alluredir 指定 report 路径
执行完之后打开 report 文件夹,会自动生成 xml 格式的报告
安装 Command Tool
allure 的版本目前有 2 个,从 github 上看,allure1 丌再被支持, 请考虑使用 allure2 https://github.com/allure-framework/allure2 替代
安装好之后将allure文件包解压到你的项目文件包里
然后进行环境的配置
我的电脑-属性-高级系统设置-环境变量-在path中新建添加一条你allure的路径
运行 allure2
前面 pytest -s -q —alluredir 返一步已经生产了 xml 格式的报告, 放到了 report 目录下,
接着执行以下命令格式 > allure generate directory-with-results/ -o directory-with-report
directory-with-results 是 alluredir 生成的 xml 目录, directory-with-report 是最终生成 html 的目录 allure.bat 已经加到环境变量了
,所以可以用相对路径去生成 html 报告 > allure generate report/ -o report/html
执行完之后目录结构如下:
打开报告 直接找到 report/html 打开 index.html 会显示一个空的报告,返 里用 pycharm 去打开就可以了
打开后报告展示