pytest文档8-html报告报错截图+失败重跑

前言

做web自动化的小伙伴应该都希望在html报告中展示失败后的截图,提升报告的档次,pytest-html也可以生成带截图的报告。

conftest.py

1.失败截图可以写到conftest.py文件里,这样用例运行时,只要检测到用例实例,就调用截图的方法,并且把截图存到html报告上

# conftest.py文件
# coding:utf-8

from selenium import webdriver
import pytest

driver = None

@pytest.mark.hookwrapper
def pytest_runtest_makereport(item):
    """
    当测试失败的时候,自动截图,展示到html报告中
    ** 作者:上海-悠悠 QQ交流群:646645429**
    :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

def _capture_screenshot():
    '''
    ** 作者:上海-悠悠 QQ交流群:646645429**
    截图保存为base64,展示到html中
    :return:
    '''
    return driver.get_screenshot_as_base64()

@pytest.fixture(scope='session', autouse=True)
def browser():
    global driver
    if driver is None:
        driver = webdriver.Firefox()
    return driver

2.用例部分如下:

# test_01.py文件

from selenium import webdriver
import time

#** 作者:上海-悠悠 QQ交流群:646645429**

def test_yoyo_01(browser:webdriver.Firefox):

    browser.get("https://www.cnblogs.com/yoyoketang/")
    time.sleep(2)
    t = browser.title
    assert t == "上海-悠悠"

# test_02.py文件

from selenium import webdriver
import time

# ** 作者:上海-悠悠 QQ交流群:646645429**

def test_yoyo_01(browser:webdriver.Firefox):

    browser.get("https://www.cnblogs.com/yoyoketang/")
    time.sleep(2)
    t = browser.title
    assert "上海-悠悠" in t

报告展示

1.cmd打开,cd到用例的目录,执行指令

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

2.生成报告如下

失败重试

用例失败再重测1次,命令行加个参数就行了

$ py.test —rerun 1 —html=report.html —self-contained-html

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码农阿宇

利用1.1.1.1进行DNS网络加速,仅需2分钟让网络更快

NEWS 近日,Cloudflare 和 APNIC联合推出了1.1.1.1DNS网络加速。 Cloudflare 运行全球规模最大、速度最快的网络之一。APN...

99450
来自专栏酷玩时刻

微信公众号开发之公众号

微信极速开发系列文章:http://www.jianshu.com/p/a172a1b69fdd

45120
来自专栏xingoo, 一个梦想做发明家的程序员

Oracle二三事之 EBS升级

  原文转载:http://tech.it168.com/a2012/1121/1425/000001425400.shtml   对于初次执行这个过程的人而言...

31770
来自专栏黑白安全

Cyber​​Ark 企业密码保险库现高危远程代码执行漏洞

据外媒 4 月 9 日消息,德国网络安全公司 RedTeam Pentesting GmbH 发现 CyberArk Enterprise Password V...

7710
来自专栏未闻Code

在全新的Ubuntu中安装Python3 环境

在全新的Ubuntu 18.04中已经自带了Python 3。但是这个Python环境并不完整,需要补充安装下面几个模块。

23340
来自专栏FreeBuf

反入侵之发现后门利用mount-bind将进程和端口信息隐匿

0x00. 前言 作为一名安全工程师,日常工作中会经常遇到网站遭遇入侵,甚至被植入后门,如何去发现后门,进而对入侵进行调查取证都是一名优秀的安全工程师必备功课,...

40260
来自专栏DannyHoo的专栏

iOS开发中使用try catch获取程序崩溃原因

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

31130
来自专栏黑白安全

跨站点脚本(XSS)攻击

跨站点脚本(XSS)是一种常见的攻击媒介,可将恶意代码注入易受攻击的Web应用程序。XSS不同于其他网络攻击媒介(例如SQL注入),因为它不直接针对应用程序本身...

13110
来自专栏finleyMa

有好用的PHP CMS吗

最新帮朋友做个企业站,说白了就是个简单的CMS。 纯展示类的。这种东西技术含量低,千万不要自己从头开发,只要找个现成的cms,改改模板就可以了。时间就是金钱,...

50320
来自专栏黑白安全

西门子 SIPROTEC、Reyrolle 设备曝高危漏洞,或致变电站等供电设施遭受攻击

近日, ICS-CERT 发布安全报告称西门子 SIPROTEC 4,SIPROTEC Compact 以及 Reyrolle 设备存在的三个漏洞可能会被黑客利...

13440

扫码关注云+社区

领取腾讯云代金券