html css的pad实验切片报告,pytest文档20-pytest-html报告优化(添加Description)

前言

pytest-html测试报告默认是不展示用例描述Description内容,之前用unittest生成的报告是可以展示用例的描述,也就是test开头的用例下三个引号里面的注释(docstring)内容。 pytest-html框架是可以修改生成的报告内容的,可以自己添加和删除html报告的table内容。

修改报告

pytest-html官方文档地址【https://pypi.org/project/pytest-html/】 l可以通过为标题行实现自定义钩子来修改列,下面的示例在conftest.py脚本中使用测试函数docstring添加描述(Description)列,添加可排序时间(Time)列,并删除链接(Link)列:

from datetime import datetime

from py.xml import html

import pytest

@pytest.mark.optionalhook

def pytest_html_results_table_header(cells):

cells.insert(2, html.th('Description'))

cells.insert(1, html.th('Time', class_='sortable time', col='time'))

cells.pop()

@pytest.mark.optionalhook

def pytest_html_results_table_row(report, cells):

cells.insert(2, html.td(report.description))

cells.insert(1, html.td(datetime.utcnow(), class_='col-time'))

cells.pop()

@pytest.mark.hookwrapper

def pytest_runtest_makereport(item, call):

outcome = yield

report = outcome.get_result()

report.description = str(item.function.__doc__)

还可以通过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

通过上面的官方文档,可以自己修改下测试报告,在报告里面添加一列的内容,添加到第二列,于是修改如下,红色代码全部注释掉

e431e410231b569a54bb43ab6b659b40.png

report.description = str(item.function.doc)

69890e5b6ad3e84e4a411155ae123465.png

代码参考

from datetime import datetime

from py.xml import html

import pytest

@pytest.mark.hookwrapper

def pytest_runtest_makereport(item):

"""

当测试失败的时候,自动截图,展示到html报告中

:param item:

"""

pytest_html = item.config.pluginmanager.getplugin('html')

outcome = yield

report = outcome.get_result()

extra = getattr(report, 'extra', [])

if report.when == 'call' or report.when == "setup":

xfail = hasattr(report, 'wasxfail')

if (report.skipped and xfail) or (report.failed and not xfail):

file_name = report.nodeid.replace("::", "_")+".png"

screen_img = _capture_screenshot()

if file_name:

html = '

'οnclick="window.open(this.src)" align="right"/>

' % screen_img

extra.append(pytest_html.extras.html(html))

report.extra = extra

report.description = str(item.function.__doc__)

@pytest.mark.optionalhook

def pytest_html_results_table_header(cells):

cells.insert(1, html.th('Description'))

@pytest.mark.optionalhook

def pytest_html_results_table_row(report, cells):

cells.insert(1, html.td(report.description))

效果展示

修改完之后cmd运行

pytest --html=report.html --self-contained-html

5a6172bd92902bcf65cf7620d515beb7.png

---------------------------------pytest结合selenium自动化完整版-------------------------

作者:上海-悠悠 QQ交流群:874033608

也可以关注下我的个人公众号:yoyoketang

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值