当前位置: 首页 > news >正文

selenium用例执行过程采集操作形成测试报告上的回复

在代码执行的过程中不断的进行截图,把截图拼接成gif动态图,放在测试报告上

1、每条用例执行启动一个线程,这个线程会每隔0.3秒进行截图

  • 项目下创建一个临时目录video用来存储所有截图以及gif动态图
  • 封装不断截图的方法,每隔0.3秒进行截图
    # 封装一个普通函数,实现每隔0.3秒截图
    # dr代表核心操作对象
    # worker_id代表当前进程id,主要是用来在多进程并发时区分不同进程下的截图
    def shot(dr,worker_id):global shot_flagshot_flag = True # 全局变量,用来标识每条用例截图的开始和结束,用例结束后把shot_flag变为fasle# 每次截图开始前,清除当前进程下临时图片及gif动态图for img in os.listdir(f'{project_path}/video'):# img就是拿到的每个文件名称if img.startswith(worker_id):os.remove(f'{project_path}/video/{img}')i = 0while shot_flag:try:dr.get_screetshot_as_file(f'{project_path}/video/{worker_id}_{i}.png')time.sleep(0.3)i += 1except:return
  • 没条用例开始执行的时候开启一个线程,执行截图
    @pytest.fixture(scope='function',autouse=True)
    def case_setup(worker_id):# 创建线程# target表示该线程要执行的动作,只写函数名称就行# args指的是要执行这个函数时需要的入参thd = threading.Thread(target=shot,args=(DriverOperate.globalDriverOperate,worker_id))thd.start()
  • 将图片按照顺序拼接成gif动态图,把当前用例形成的gif动态图放在测试报告上
  • @pytest.fixture(scope='function',autouse=True)
    def case_teardown(worker_id,common_info):yieldglobal shot_flagshot_flag=False# 完成当前用例临时图片的拼接,形成gif动态图# 1.得到当前用例所有的临时图片名称img_list = []# 存储多个图片名称# 图片名称规则 gw0_0.png/gw0_1.png/gw0_2.pngfor img in os.listdir(f'{project_path}/video'):if img.startswith(worker_id) and img.endswith('.png'):img_list.append(img)# img_list = ['gw0_0.png','gw0_1.png','gw0_11.png','gw0_31.png']# 从目录得到的所有图片名称的排序上可能不对,拼接gif必须按照顺序来# 因此我们主要针对img_list中的图片名称进行排序img_list.sort(key=lambda name: int(name.split('_')[1][:-4]))# 完成图片拼接,需要用到一个图片操作的第三方库# pip  install pillow -i https://pypi.doubanio.com/simplefirst_img = Image.open(f'{project_path}/video/{img_list[0]}')eles_img = [] # 存储除了第一张图以外的其他图片的二进制对象for img in img_list[1:]:cur_img = Image.open(f'{project_path}/video/{img}')eles_img.append(cur_img)# 完成拼接first_img.save(f'{project_path}/video/{worker_id}_record.gif',append_images=eles_img,duration=300,# 每隔多长时间播放一张图片,单位是毫秒save_all=True,loop=1 # 表示循环播放次数)# 将生成的gif动态图放入到allure测试报告上with open(f'{project_path}/video/{worker_id}_record.gif',mode='rb') as f:allure.attach(f.read(),'执行回放',attachment_type=allure.attachment_type.GIF)# 每次用例执行结束后,清除当前进程下临时图片及gif动态图for img in os.listdir(f'{project_path}/video'):# img就是拿到的每个文件名称if img.startswith(worker_id):os.remove(f'{project_path}/video/{img}')

相关文章:

selenium用例执行过程采集操作形成测试报告上的回复

在代码执行的过程中不断的进行截图,把截图拼接成gif动态图,放在测试报告上 1、每条用例执行启动一个线程,这个线程会每隔0.3秒进行截图 项目下创建一个临时目录video用来存储所有截图以及gif动态图封装不断截图的方法,每隔0.3秒…...

多元数据直观表示(R语言)

一、实验目的: 通过上机试验,掌握R语言实施数据预处理及简单统计分析中的一些基本运算技巧与分析方法,进一步加深对R语言简单统计分析与图形展示的理解。 数据: 链接: https://pan.baidu.com/s/1kMdUWXuGCfZC06lklO5iXA 提取码: …...

【JavaEE】线程安全

【JavaEE】线程安全 一、引出线程安全二、引发线程安全的原因三、解决线程安全问题3.1 synchronized关键字(解决修改操作不是原子的)3.1.1 synchronized的特性3.1.1 synchronized的使用事例 3.2 volatile 关键字(解决内存可见性) …...

HarmonyOS 5.0应用开发——多线程Worker和@Sendable的使用方法

【高心星出品】 文章目录 多线程Worker和Sendable的使用方法开发步骤运行结果 多线程Worker和Sendable的使用方法 Worker在HarmonyOS中提供了一种多线程的实现方式,它允许开发者在后台线程中执行长耗时任务,从而避免阻塞主线程并提高应用的响应性。 S…...

华为OD-2024年E卷-分批萨[100分]

文章目录 题目描述输入描述输出描述用例1解题思路Python3源码 题目描述 吃货"和"馋嘴"两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。但是粗心的服务员将披萨切成了每块大小都完全不…...

SSH监控

创建/etc/ssh/sshrc文件 写入以命令 echo " 系统状态 " uptime free -h 每次登录会显示 如果在sshrc文件加入以下脚本每次登录就是执行这个脚本 # cat /etc/ssh/sshrc echo " 系统状态 " uptime free -h /usr/local/bin/monit.sh以…...

leetcode日记(74)扰乱字符串

很有难度的一题,一开始真的绕了很多思维上的弯路。 最开始的想法是递归,看到题目的时候想到动态规划但是完全没有思路应该怎么用,结果确实是递归动态规划。 最开始的想法是构建树,每一层包含这一步划分的方法(实际会…...

RV1126的OSD模块和SDL_TTF结合输出H264文件

目录 一.RV1126多线程处理输出OSD字符叠加图层的流程 1.1. VI模块的初始化 1.2. 初始化VENC模块: 1.3. 初始化RGN模块: 1.4. 绑定VI模块和VENC模块,伪代码如下 1.5. 创建多线程进行OSD字库的叠加: 1.6. 获取每一帧处理过后的…...

GEE:计算长时间序列NPP与NDVI之间的相关系数

GEE中内置了计算相关系数的函数,可以分析两个变量之间的相关性,比如要分析两个波段之间的相关性,主要用到ee.Reducer.pearsonsCorrelation()函数。 ee.Reducer.pearsonsCorrelation() 内容:创建一个双输入归约器,用于…...

水仙花数(华为OD)

题目描述 所谓水仙花数,是指一个n位的正整数,其各位数字的n次方和等于该数本身。 例如153是水仙花数,153是一个3位数,并且153 13 53 33。 输入描述 第一行输入一个整数n,表示一个n位的正整数。n在3到7之间&#x…...

【对话状态跟踪】关心整个对话过程用户完整意图变化

对话状态管理器 核心逻辑是解决键冲突和验证范围有效性, 但需依赖外部输入的正确性。在实际应用中, 可能需要结合用户提示或自动修正逻辑以提高鲁棒性。 NLU 槽 值 对儿 NLU的目的是把自然语言解析成结构化语义。结构化语义有多种表示方式&#xff0c…...

【分享】网间数据摆渡系统,如何打破传输瓶颈,实现安全流转?

在数字化浪潮中,企业对数据安全愈发重视,网络隔离成为保护核心数据的重要手段。内外网隔离、办公网与研发网隔离等措施,虽为数据筑牢了防线,却也给数据传输带来了诸多难题。传统的数据传输方式在安全性、效率、管理等方面暴露出明…...

TikTok创作者市场关闭!全新平台TikTok One将带来哪些改变?

TikTok创作者市场关闭,全新平台TikTok One上线,创作者和品牌将迎来哪些新机遇? 近日,TikTok宣布关闭其原有的创作者市场(TikTok Creator Marketplace),并推出全新平台TikTok One。这一消息在社…...

LeetCode hot 100—矩阵置零

题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2&#xff1…...

部署Windows Server自带“工作文件夹”实现企业网盘功能完整步骤

前文已经讲解过Windows Server自带的“工作文件夹”功能,现以Windows Server 2025为例介绍部署工作文件夹的完整步骤: 为了确保您能够顺利部署和充分利用工作文件夹的功能,我将按照以下步骤进行讲解。 请注意,在域环境中部署工作…...

植物大战僵尸杂交版v3.3最新版本(附下载链接)

B站游戏作者潜艇伟伟迷于12月21日更新了植物大战僵尸杂交版3.3版本!!!,有b站账户的记得要给作者三连关注一下呀! 不多废话下载链接放上: 夸克网盘链接::https://pan.quark.cn/s/6f2a…...

非关系型数据库和关系型数据库的区别

非关系型数据库(NoSQL)和关系型数据库(SQL)的主要区别体现在以下几个方面: 数据模型: 关系型数据库(SQL):数据以表格形式存储,数据行和列组成,每个…...

CPU负载高告警问题的定位与优化建议

#作者:猎人 文章目录 背景一.问题排查1.1 找到相应的容器1.2 找到对应的deployment1.3 查看pod日志1.4 查看nginx配置文件1.5 查看deployment的yaml文件 二.优化建议 背景 Docker 版本:19.03.14 Operating System: Red Hat Ent…...

2月28日,三极管测量,水利-51单片机

众所周知,三极管(BJT)有三个管脚,基极(B)、集电极(C)、发射极(E),在实际应用中,不可避免地会遇到引脚辨别的问题。接下来就讲下三极管…...

批量提取 Word 文档中的图片

在 Word 文档中,我们可以插入图片、文本、链接等各种各样的资源。在某些场景下我们需要提取这些信息,比如我们需要提取 Word 文档中的图片,将每一个 Word 文档中的图片都提取出来放到一个单独的文件夹中,那么我们应该怎么做呢&…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...

k8s从入门到放弃之Pod的容器探针检测

k8s从入门到放弃之Pod的容器探针检测 在Kubernetes(简称K8s)中,容器探测是指kubelet对容器执行定期诊断的过程,以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...

英国云服务器上安装宝塔面板(BT Panel)

在英国云服务器上安装宝塔面板(BT Panel) 是完全可行的,尤其适合需要远程管理Linux服务器、快速部署网站、数据库、FTP、SSL证书等服务的用户。宝塔面板以其可视化操作界面和强大的功能广受国内用户欢迎,虽然官方主要面向中国大陆…...