pytest-html作为一款测试报告展示工具包,因其简单易用而备受欢迎。也有人因其不够美观而吐槽。其实它也提供了几个HOOK方法,可以供使用者对其内容进行自由的设置。
hook函数列表:
def pytest_html_report_title(report):
""" Called before adding the title to the report """
def pytest_html_results_summary(prefix, summary, postfix):
""" Called before adding the summary section to the report """
def pytest_html_results_table_header(cells):
""" Called after building results table header. """
def pytest_html_results_table_row(report, cells):
""" Called after building results table row. """
def pytest_html_results_table_html(report, data):
""" Called after building results table additional HTML. """
具体的使用方法:
def pytest_html_report_title(report):
"""
修改测试报告的标题
:param report:
:return:
"""
report.title = "自动化项目测试报告"
def pytest_configure(config):
# 添加接口地址与项目名称
config._metadata["项目名称"] = "易牵星自动化系统"
# 删除Java_Home
config._metadata.pop("JAVA_HOME")
config.user = User(config)
config.pluginmanager.register(config.user)
@pytest.mark.optionalhook
def pytest_html_results_table_header(cells):
"""
测试报告修改表头
:param cells:
:return:
"""
cells.insert(2, html.th('Description'))
cells.insert(1, html.th('Time', class_='sortable time', col='time'))
# cells.pop() #删除最后links列的内容
def pytest_html_results_summary(prefix, summary, postfix):
"""
修改summary里面值
"""
prefix.append(html.p("这里是前缀", class_="error"))
postfix.append(html.p("这里是后缀\n\t"))
@pytest.mark.optionalhook
def pytest_html_results_table_row(report, cells):
"""
修改测试报告每一项的值
:param report: 每一个节点的值
:param cells:
:return:
"""
cells.insert(2, html.td(report.__doc__))
cells.insert(1, html.td(datetime.utcnow(), class_='col-time'))
# cells.pop() #删除最后links列的内容
def pytest_html_results_table_html(report, data):
"""
修改测试报告的值
:param report: 单个测试结果
:param data: 单个测试结果的日志信息
:return:
"""
print(report)
print(data)
各个模块的划分,里面每一个模块都可以根据自己的需求进行定制。同时是支持hmtl脚本的。如果需要修改样式可以修改:venv\Lib\site-packages\pytest_html\resources目录下的样式文件,通过类似 prefix.append(html.p("这里是前缀", class_="error"))的方式进行引用。
网友评论