pytest-08-html报告报错截图+失败重跑

1、失败截图

一般会把失败截图放在conftest.py文件内,运行时,只要检测到用例实例,就调用该方法

from selenium import webdriver

import pytest

driver = None

@pytest.mark.hookwrapper

def pytest_runtest_makereport(item):

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

    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():

    """截图保存为base64,展示到html中 """

    return driver.get_screenshot_as_base64()

@pytest.fixture(scope='session', autouse=True)

def browser():

    global driver

    if driver is None:

        driver = webdriver.Chrome()

    return driver

如果未安装selenium,可以在file->setting->project:pytest-> Project Interprester  这个会话中,双击pip,在搜索框中输入selenium 然后点击左下方install 即可

生成报告:pytest --html=./report/report.html --self-contained-html

如果遇到如下:AttributeError: 'NoneType' object has no attribute 'get_screenshot_as_base64'错误,可能是因为未对想打开的浏览器中添加相应版本的driver驱动

未安装浏览器驱动报错

谷歌驱动下载地址:http://chromedriver.storage.googleapis.com/index.html

为了方便可直接将谷歌浏览器驱动chromedriver.exe放到项目的目录下

执行命令后生成报告

2、  失败重试

失败重试需要依赖插件pytest-rerunfailures插件

执行:pip install pytest-rerunfailures 命令安装

用例失败再重跑n次,命令行增加参数--reruns n 其中n是次数 默认是0次

pytest --reruns 1 --html=./report/report.html --self-contained-html

添加延迟n秒再重跑1次,命令行增加参数 --reruns-delay=n 其中n是多少秒

pytest --reruns=1 --reruns-delay=3 --html=./report/report.html --self-contained-html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 导包 import unittest 测试类以Test开头 测试方法名称必须以test开头 pytest命令行运行...
    xiaohan_zhang阅读 3,150评论 0 0
  • 本文参考了官方文档和一些乐于分享的大佬的博客,结合自己的理解完成。学习pytest框架的小白,需要按照教程自己敲一...
    成都_阿木木阅读 14,844评论 1 6
  • 前言 pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告。兼容Python 2.7,3....
    云樱梦海阅读 23,161评论 0 3
  • 引言 如果你想快速上手pytest,只关注"Pytest必会知识点"章节就可以了(该章节已经能够解决基础的ui和接...
    测试开发Kevin阅读 5,583评论 0 15
  • 一、自动化测试所属分类(站在代码可见度角度分类) 1. 黑盒测试(功能测试)2. 灰盒测试(接口测试)3. 白盒测...
    MAVIS_42bf阅读 4,509评论 0 0

友情链接更多精彩内容