从0到1精通自动化测试,pytest自动化测试框架,生成html报告与html报告报错截图+失败重跑(五)

news/2024/7/8 2:06:54

目录

一、生成html报告

1、pytest-html

2、html报告

3、指定报告路径

4、显示选项

5、更多功能

二、html报告报错截图+失败重跑

1、conftest.py

2、报告展示

3、失败重试


一、生成html报告

1、pytest-html

pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告,兼容Python 2.7,3.6

1.github上源码地址【https://github.com/pytest-dev/pytest-html】

2.pip安装

pip install pytest-html


3.执行方法

pytest —html=report.html

2、html报告

1.打开cmd,cd到需要执行pytest用例的目录,执行指令:pytest —html=report.html

2.执行完之后,在当前目录会生成一个report.html的报告文件,显示效果如下

3、指定报告路径

1.直接执行”pytest —html=report.html”生成的报告会在当前脚本的同一路径,如果想指定报告的存放位置,放到当前脚本的同一目录下的report文件夹里

pytest —html=./report/report.html

请添加图片描述

2.如果想指定执行某个.py文件用例或者某个文件夹里面的所有用例,需加个参数。具体规则参考【pytest文档2-用例运行规则】
请添加图片描述

4、显示选项

默认情况下,“ 结果”表中的所有行都将被展开,但具测试通过的行除外Passed

可以使用查询参数自定义此行为:?collapsed=Passed,XFailed,Skipped

5、更多功能

更多功能查看官方文档【GitHub - pytest-dev/pytest-html: Plugin for generating HTML reports for pytest results】

二、html报告报错截图+失败重跑

1、conftest.py

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

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报告中
    程序员曦曦
    :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;" ' \
                       'οnclick="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:
    '''
    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

'''程序员曦曦'''

def test_yoyo_01(browser:webdriver.Firefox):

    browser.get("https://blog.csdn.net/x2waiwai?spm=1000.2115.3001.5343")
    time.sleep(2)
    t = browser.title
    assert t == "程序员曦曦"

# test_02.py文件

from selenium import webdriver
import time

'''程序员曦曦'''
def test_yoyo_01(browser:webdriver.Firefox):

    browser.get("https://blog.csdn.net/x2waiwai?spm=1000.2115.3001.5343")
    time.sleep(2)
    t = browser.title
    assert "程序员曦曦" in t

2、报告展示

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

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

3、失败重试

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

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

          【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通


二、接口自动化项目实战  

三、Web自动化项目实战


四、App自动化项目实战 

五、一线大厂简历


六、测试开发DevOps体系 

七、常用自动化测试工具


八、JMeter性能测试 

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到


http://lihuaxi.xjx100.cn/news/1265263.html

相关文章

用python写一个接收数据的服务

import socket # 定义服务器地址和端口号 SERVER_HOST localhost SERVER_PORT 8000 # 创建服务器套接字 server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定地址和端口号 server_socket.bind((SERVER_HOST, SERVER_PORT)) # 监听客户端连接 server_so…

下峰锁定,行情未尽,筹码峰真的不会骗人吗?

在学习筹码分布的时候&#xff0c;经常可以看到这样的顺口溜&#xff1a;“上峰不死&#xff0c;下跌不止&#xff1b;下峰锁定&#xff0c;行情未尽”。简单解释一下就是&#xff1a;下跌行情中&#xff0c;如果上密集峰未被充分消耗&#xff0c;那么就没有新的行情产生&#…

实时监控Active Directory用户登录操作

用户登录到其域计算机是任何企业中发生的日常活动。一开始&#xff0c;这可能看起来是一个简单的Active Directory事件&#xff0c;但分配了不同角色的管理员可以将这些有价值的数据用于各种审计&#xff0c;合规性和运营需求。组织需要审核“AD 用户登录日志”的详细信息&…

2023-06-21:redis中什么是BigKey?该如何解决?

2023-06-21&#xff1a;redis中什么是BigKey&#xff1f;该如何解决&#xff1f; 答案2023-06-21&#xff1a; 什么是bigkey bigkey是指存储在Key-Value数据库中的键对应的值所占用的内存空间较大。举个例子&#xff0c;如果值是字符串类型&#xff0c;它可以达到最大512MB的…

屏蔽箱的材质结构和使用事项介绍

屏蔽箱是一种用于屏蔽机电波干扰的设备&#xff0c;通常用于电磁兼容测试、天线测试、短波收发等需要屏蔽电磁辐射噪声的场合。这种箱子通常由导电或者导磁材料制成&#xff0c;内部配备高效屏蔽材料&#xff0c;能够在一定范围内有效地屏蔽电磁波辐射&#xff0c;避免电磁波干…

Elasticsearch(十一)搜索---搜索匹配功能②--range查询和exists查询

一、前言 继上一节学习了ES的搜索的查询全部和term搜索后&#xff0c;此节将把搜索匹配功能剩余的2个学习完&#xff0c;分别是range搜索和exists搜索 二、range范围搜索 range查询用于范围查询&#xff0c;一般是对数值型和日期型数据的查询。使用range进行范围查询时&…

基于Java毕业论文管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

TestOne自动化测试日志自动分类算法,帮助用户快速处理执行错误!

自动化测试的每次执行&#xff0c;都会产生大量的日志信息。特别是当执行发生错误&#xff0c;比如数据库异常、通讯异常等情况的时候&#xff0c;大量执行的自动化测试用例会报错。 实际上&#xff0c;很多错误的类型是比较类似的&#xff0c;但由于测试用例的数量很大&#x…