首页 > 其他分享 >APP自动化--pytest-把图片添加到测试报告中--(异常截图)

APP自动化--pytest-把图片添加到测试报告中--(异常截图)

时间:2023-05-22 15:55:35浏览次数:37  
标签:截图 测试报告 extra -- APP 用例 pytest result extras

前面在  APP自动化--pytest-把图片添加到测试报告中--(主动截图)中说明了extra.append(extras.image(driver1.get_screenshot_as_base64()))的用法,那么把它放到conftest的异常截图代码中就可以实现异常截图。

import pytest
from pytest_html import extras

"""解决pytest-html报告中文乱码问题,避免修改pytest-html/plugi.py源码"""
def pytest_collection_modifyitems(items):
    for item in items:
        item.name = item.name.encode('unicode-escape').decode('utf-8')
        item._nodeid = item.nodeid.encode('unicode-escape').decode('utf-8')


# 以下是pytest提供异常截图的方法
@pytest.hookimpl(hookwrapper=True)  # 写死的
def pytest_runtest_makereport(item, call):  # 写死的
    # pytest会将找到的用例存在迭代器中
    outcome = yield  # 通过这个方法接受所有用例的结果
    result = outcome.get_result()
    extra = getattr(result, "extra", [])    # 如果从rusult里获取不到extra,设置它的默认值是一个空列表。
    # print("用例的标识数据:", result)
    if result.when == "call":
        print("用例的执行结果:", result)
        if result.outcome == "failed":
            """进行截图"""
            # from Package.什么情况下可以操作内存空间 import list1
            # driver1 = list1[-1]
            from Package.什么情况下可以操作内存空间 import Comtext
            driver1 = getattr(Comtext, "driver")  # 去类中拿属性
            # driver1.save_screenshot("异常截图11.png")  #
            extra.append(extras.image(driver1.get_screenshot_as_base64()))   # 异常时触发截图(二进制)
            # extra是跟随用例实现的。默认是用例报告对象的一个属性。可以通过获取用例的报告对象获取。报告对象是上面的result,
            # extra是pytest实现的,所以直接导包 from pytest_html import extras

            result.extra = extra    # 重新赋值,非常重要,不能忘掉

直接复制 extra.append(extras.image(driver.get_screenshot_as_base64())) 到conftest的异常情况截图的代码中,把driver替换成这里的driver1.  extra和extras用以下方法实现。

# extra是跟随用例实现的。默认是用例报告对象的一个属性。可以通过获取用例的报告对象获取。报告对象是上面的result,
所以这里再设置变量
extra = getattr(result, "extra", [])    # 如果从rusult里获取不到extra,设置它的默认值是一个空列表。
# extra是pytest实现的,所以直接导包 from pytest_html import extras
最后给extra重新赋值
result.extra = extra    # 重新赋值,非常重要,不能忘掉
 

 

标签:截图,测试报告,extra,--,APP,用例,pytest,result,extras
From: https://www.cnblogs.com/gezirui/p/17420834.html

相关文章

  • 源端为备库的场景下Duplicate失败问题
    环境:Oracle11.2.0.3+OEL7.9A->B->C级联ADG环境:db11g->db11gadg->db11gcas之前测试提到,从一级备库duplicate到二级备库会报错:RMAN-00571:===========================================================RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS......
  • Java的Stream流的分页,Stream的skip和limit实现分页
    1、工具类packagecom.cc.testproject.utils;importcom.github.pagehelper.PageInfo;importorg.springframework.stereotype.Component;importjava.util.List;importjava.util.stream.Collectors;/**List分页工具类*@authorCC*@since2022/2/16**/@Compon......
  • Java网络编程----通过实现简易聊天工具来聊聊NIO
    前文我们说过了BIO,今天我们聊聊NIO。NIO是什么?NIO官方解释它为NewlO,由于其特性我们也称之为,Non-BlockingIO。这是jdk1.4之后新增的一套IO标准。为什么要用NIO呢?我们再简单回顾下BIO:阻塞式IO,原理很简单,其实就是多个端点与服务端进行通信时,每个客户端有一个自己的socket,他们与服......
  • 10g中如何修改数据库字符集?
    SQL>!uname-aLinuxroger2.6.9-42.ELsmp#1SMPWedJul1223:27:17EDT2006i686i686i386GNU/LinuxSQL>selectuserenv('language')fromdual;USERENV('LANGUAGE')----------------------------------------------------AMER......
  • 国家大力推进新基建,将对哪些行业产生利好影响?
    去年3月,国家首次明确提出了“新基建”的范围,并将其作为“十四五”期间的战略发展方向,予以全力推进。当时,整个社会和舆论都被这个新名词所吸引,给予了极大的关注热情。人们都在想,到底什么是新基建?新基建34万亿的投资,到底建些啥?建好之后,又有啥用?哪些行业,能够享受新基建的红利?时至今日,......
  • 使用process-exporter监控主机进程
    process-exporter介绍在prometheus中,可以借助process-exporter用来检测所选进程的状态信息,官网地址https://github.com/ncabatoff/process-exporter运行方法:process-exporter[options]-config.pathfilename.yml若选择监控的进城并对其进行分组,可以使用命令行参数或者yaml配置文......
  • ROS单目相机标定 ------ 亲测
    camera_calibration/Tutorials/MonocularCalibration-ROSWiki说明:本教程介绍使用camera_calibration的cameracalibrator.py节点在ROS上使用原始图像校准单目相机。 1.在开始之前确保您具备以下条件:具有已知尺寸的大型棋盘。本教程使用108毫米正方形的6*4棋盘。校准使用......
  • 看懂IPv6+,这篇就够了
    5G网络的不断建设和普及,加速了我们迈入万物互联时代的步伐。我们的整个互联网络,正在发生翻天覆地的变化。急剧增加的网络连接数和流量,对网络的承载和传送能力,提出了前所未有的挑战。除了速率和带宽之外,5G在垂直行业的落地,也要求网络能够提供灵活的差异化定制服务能力。也就是说,面对......
  • 55 | 理解Disruptor(下):不需要换挡和踩刹车的CPU,有多快?
    上一讲,我们学习了一个精妙的想法,Disruptor通过缓存行填充,来利用好CPU的高速缓存。不知道你做完课后思考题之后,有没有体会到高速缓存在实践中带来的速度提升呢?不过,利用CPU高速缓存,只是Disruptor“快”的一个因素,那今天我们就来看一看Disruptor快的另一个因素,也就是......
  • 人的顶级能量从哪里获取?
    人的能量也分为三种,分别是初级能量,高级能量,和顶级能量这三种能量该怎么获取1:初级能量,从食物中获取人类的初级能量,靠吃饭喝水解决,饮食是人类赖以生存的基础在过去缺衣少食的阶段,人活着就是为了获取这些基本的能量。当然我们早就过了这个阶段了,现在很少人还处在三餐不饱/食不果腹的阶......