一、pytest生成的原始html报告
image.png1、在我们实际工作中,环境信息不一定要在报告中详细提现,可以增减
2、用例信息,默认展示的是用例的model名::用例名称,并不直观,所以我们可以增加一个用例描述,直观描述用例的测试内容
3、links列没有用到,可以删除
4、logs的作用往往是为了报错或者用例执行失败后调试用的,所以在用例稳定运行且成功的情况下可以去掉。
接下来我们就来针对以上4点,对我们的测试报告进行优化
二、测试报告优化
测试报告格式优化,所有内容均需要在conftest.py中配置
首先引入以下包
from py.xml import html
import pytest
1、环境信息增减
conftest.py中增加以下代码,具体需要增加和去除的信息根据个人需要调整
1.1、修改Environment项目展示的信息
def pytest_configure(config):
# 添加项目名称
config._metadata["项目名称"] = "钣喷车间小程序测试"
# 删除Java_Home
config._metadata.pop("JAVA_HOME")
# 删除Plugins
config._metadata.pop("Plugins")
1.2、添加Summary项目展示的信息
@pytest.mark.optionalhook
def pytest_html_results_summary(prefix): #添加summary内容
prefix.extend([html.p("所属部门: 测试组")])
prefix.extend([html.p("测试人员: 李晓良")])
1.3、效果展示
image.png2、增加用例描述和去除link列
@pytest.mark.optionalhook
def pytest_html_results_table_header(cells):
cells.insert(1, html.th('Description')) # 表头添加Description
cells.pop(-1) # 删除link
@pytest.mark.optionalhook
def pytest_html_results_table_row(report, cells):
cells.insert(1, html.td(report.description)) #表头对应的内容
cells.pop(-1) # 删除link列
@pytest.mark.hookwrapper
def pytest_runtest_makereport(item, call): #description取值为用例说明__doc__
outcome = yield
report = outcome.get_result()
report.description = str(item.function.__doc__)
注:用例的description取值为对应用例的说明
image.png
效果展示:
image.png3、去除执行成功用例的log输出
@pytest.mark.optionalhook
def pytest_html_results_table_html(report, data): #清除执行成功的用例logs
if report.passed:
del data[:]
data.append(html.div('自定义用例pass展示的log.', class_='empty log'))
增加以上代码输出的测试报告,如果用例执行通过,则不会展示log,会展示自己定义的输出。
image.png
网友评论