pytest-html测试报告

1、安装类库: pytest-html

2、生成默认html报告:pytest --html=报告名称.html

3、执行指定文件生成测试报告:在指定运行脚本下方输入

if __name__ == '__main__':
    pytest.main(['XXX.py','--html=XXReport.html'])

4、定制报告内容

1.在测试报告中追加测试执行人描述信息

进入conftest.py文件(放在框架根目录下)

添加以下代码

#*********************************************************
#在html测试报告中添加测试人信息
@pytest.mark.optionalhook
def pytest_html_results_summary(prefix, summary, postfix):
    prefix.extend([html.p("测试人: 测试人姓名")])

#  执行测试报告,可以使用指令也可以使用main方法如下:
if __name__ == '__main__':
    pytest.main(['XXX.py','--html=XXReport.html'])

 

2.在测试报告中追加每个测试方法的执行时间

进入conftest.py

添加以下代码

import time
#在html测试报告中添加测试执行时间
@pytest.mark.optionalhook
def pytest_html_results_table_row(report, cells):
    cells.insert(1, html.td(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), class_='col-time'))
    cells.pop()

3.在测试报告中添加错误截图

进入conftest.py

添加以下代码


#导入selenium类库
from selenium import webdriver

#定义全局的driver变量
driver = None
#设置一个browser固件
@pytest.fixture(scope='session', autouse=True)
def browser():
    global driver
    if driver is None:
        driver = webdriver.Chrome()
    return driver

#定义截屏方法
def _capture_screenshot():
    return driver.get_screenshot_as_base64()

#定义添加错误图片的钩子函数
@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 = '<div><img src="data:image/png;base64,%s" alt="screenshot" style="width:600px;height:300px;" ' \
                       'onclick="window.open(this.src)" align="right"/></div>' % screen_img
                extra.append(pytest_html.extras.html(html))
        report.extra = extra

4.备注

钩子函数也叫回调函数

普通函数我们自己定义自己去调用

用系统提供给我门的方法去写代码,代码提交给这个框架去运行,但是我们可以给他定一些具体·的要求

定义参数定义属性肯定是要在公共的configtest ,做初始化的

使用了xml对象里面的 的html方法,来创建html测试报告 ,如果要改也要调用里面的方法和对象,所以需要引入一下

有前缀有总结部分有后缀

def pytest_html_results_summary(prefix,summary,postfuix):
        因为是要添加去测试人字段

        prefix.extend([html.p("测试人":Atstudy_wuxiuna")])

.p就是标签,就是分段       

测试报告里面,失败的测试方法没有详细的记载‘

测试报告可以进行完善’如果是固定这个模式,没有什么可扩展空间了,使用其他的第三放插件

想定制一些自己的信息

钩子函数,设置了没有起效,很简单,是因为conftest用的是broswer的浏览器,但是脚本里面用是自己的浏览器

需要在脚本方法下        加一个browser,把脚本里面的所有self.driver替换成browser,驱动浏览器的函数就可以直接注释掉

html测试框架报告对初始化方法不适配,所有的东西都不完美,同样teardown也是一样的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值