Selenium与流行框架集成:pytest与Allure报告
Selenium与流行框架集成:pytest与Allure报告
在现代软件开发中,自动化测试是确保产品质量和快速迭代的关键。Selenium作为业界领先的Web自动化测试工具,其灵活性和强大的功能受到广泛认可。为了进一步提升测试效率和报告质量,本文将探讨如何将Selenium与两个流行的测试框架——pytest和Allure集成,以及如何利用它们来增强测试流程。
1. pytest简介与安装
pytest 是Python世界中的一款极其灵活且强大的测试框架,它支持简单的单元测试到复杂的集成测试。通过其丰富的插件生态系统,pytest能够无缝集成其他工具和服务,极大提高测试效率。
安装步骤:
pip install pytest
2. Selenium脚本改写为pytest风格
将现有的Selenium脚本转换为pytest风格,意味着我们可以利用pytest的断言功能和更简洁的测试结构。示例代码展示如何定义一个基本的测试用例:
import pytest
from selenium import webdriverdef test_google_search():driver = webdriver.Chrome()driver.get("https://www.google.com")driver.find_element_by_name("q").send_keys("Selenium with pytest")driver.find_element_by_name("btnK").click()assert "Selenium with pytest" in driver.page_sourcedriver.quit()
3. 参数化测试与fixture使用
pytest的参数化特性允许我们用不同的输入数据运行同一个测试,而fixture则提供了一种在测试之间共享设置和清理代码的方式。
@pytest.fixture
def browser():driver = webdriver.Chrome()yield driverdriver.quit()@pytest.mark.parametrize("search_term", ["Selenium", "pytest", "Allure"])
def test_search(browser, search_term):browser.get("https://www.google.com")browser.find_element_by_name("q").send_keys(search_term)browser.find_element_by_name("btnK").click()assert search_term in browser.page_source
4. Allure报告介绍与安装
Allure报告 是一款美观且信息丰富的测试报告工具,它能够以图表、趋势和详细描述的形式展示测试结果。Allure不仅提升了报告的可读性,还便于团队成员快速定位问题。
安装Allure命令行工具:
# Linux/macOS
brew install allure# Windows (需先安装Chocolatey)
choco install allure
5. pytest与Allure集成配置
要使pytest生成Allure兼容的测试结果,需要安装pytest-allure-adaptor插件。
pip install pytest-allure-adaptor
修改pytest运行命令,以生成Allure报告所需的XML文件:
pytest --alluredir=./allure-results
6. 生成美观的测试报告
运行以下命令生成并查看Allure报告:
allure serve ./allure-results
这将启动一个本地服务器,展示交互式测试报告。
7. 自动发送测试报告邮件
虽然不在本文详细讨论范围内,但可以借助Python的smtplib和email库实现自动化发送测试报告的邮件功能。结合Jenkins等CI/CD工具,可以在构建结束后自动触发邮件发送。
8. BDD风格测试:使用pytest-bdd
对于追求自然语言描述测试场景的团队,可以集成pytest-bdd插件,实现行为驱动开发(BDD)风格的测试编写。
9. 深入实践:持续集成中的报告优化
在持续集成(CI)流程中,利用如Jenkins或GitLab CI/CD与Allure集成,可以自动收集每次构建的测试报告,并通过可视化界面跟踪测试覆盖度、失败率等关键指标。结合自动化测试软件自动化测试软件itbuilder助力企业高效交付优质软件,一站式自动化测试平台,帮助您轻松记录测试用例,实现云端执行,让测试更高效,企业更省心。
通过上述步骤,我们不仅优化了Selenium测试脚本,还通过集成pytest与Allure显著提升了测试报告的质量和可读性,为软件项目的持续交付和质量保证提供了坚实的基础。
相关文章:
Selenium与流行框架集成:pytest与Allure报告
Selenium与流行框架集成:pytest与Allure报告 在现代软件开发中,自动化测试是确保产品质量和快速迭代的关键。Selenium作为业界领先的Web自动化测试工具,其灵活性和强大的功能受到广泛认可。为了进一步提升测试效率和报告质量,本文…...
日撸Java三百行(day17:链队列)
目录 一、队列基础知识 1.队列的概念 2.队列的实现 二、代码实现 1.链队列创建 2.链队列遍历 3.入队 4.出队 5.数据测试 6.完整的程序代码 总结 一、队列基础知识 1.队列的概念 今天我们继续学习另一个常见的数据结构——队列。和栈一样,队列也是一种操…...
Android摄像头采集选Camera1还是Camera2?
Camera1还是Camera2? 好多开发者纠结,Android平台采集摄像头,到底是用Camera1还是Camera2?实际上,Camera1和Camera2分别对应相机API1和相机API2。Android 5.0开始,已经弃用了Camera API1,新平台…...
零基础5分钟上手亚马逊云科技AWS核心云开发/云架构 - 创建高可用数据库集群
简介: 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,让大家零基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我将每天介绍一个基于亚马逊云科…...
力扣315.计算右侧小于当前元素的个数
力扣315.计算右侧小于当前元素的个数 离散化 树状数组 const int N 100010;int tr[N],n;class Solution {public:vector<int> countSmaller(vector<int>& nums) {n nums.size();vector<int> tmp(nums);vector<int> res(n);memset(tr,0,sizeo…...
websocket,css动画和css-position、display、区别
一、websocket codereturn {// 用于存储 WebSocket 返回的状态数据statusList: [],},mounted() {this.setupWebSocket();this.startBlinking();},methods: {setupWebSocket() {// 创建 WebSocket 连接const socket = new WebSocket(ws://xxx.xxx:xxx/xxx);// WebSocket 连接成功…...
前端获取视频文件宽高信息和视频时长
安装 yarn add video-metadata-thumbnails | npm install video-metadata-thumbnails引入依赖包 import { getMetadata } from video-metadata-thumbnails使用 if (file.name.includes(mp4)) {if (file) {try {console.log(file)// 获取视频的元数据const metadata await …...
【区块链+医疗健康】基于区块链的药品类监管应用管理系统 | FISCO BCOS应用案例
退热类药品的购药信息及政企互动信息等各项数据的安全性、保密性、真实性,不仅影响着监管部门的科学监管、 有效监管,也影响着企业的经营安全、诚信口碑,是区域药品安全监管工作进展的直观体现。 江苏数予科技有限公司构建基于区块链的药品类…...
MySQL4多表查询 内连接
多表查询 数据准备 CREATE DATABASE db4; USE db4; -- 创建部门表 create table if not exists dept(deptno varchar(20) primary key , -- 部门号name varchar(20) -- 部门名字 );-- 创建员工表 create table if not exists emp(eid varchar(20) primary key , -- 员工编号…...
Java -数组
1.一维数组 1.1数组定义 public class Main {public static void main(String[] args) throws Exception {int[] a new int[10];float[] f new float[10];double[] d new double[10];char[] c new char[10];} } 1.2 初始化 public class Main {public static void main(S…...
.prettierrc.js 有什么用
.prettierrc.js 是 Prettier 代码格式化工具的配置文件。 1. 作用 Prettier 是一个用于统一代码风格的工具,它可以使代码更具可读性和一致性。.prettierrc.js 文件用于自定义 Prettier 的格式化规则。 通过配置 .prettierrc.js,团队中的开发者可以遵循…...
haproxy七层代理
一.haproxy的基本部署 1.RS上装nginx [rootwebserver1 ~]# dnf install nginx -y 2.再RS上写入测试信息 [rootwebserver1 ~]# echo webserver1 - 172.25.254.10 > /usr/share/nginx/html/index.html [rootwebserver1 ~]# systemctl enable --now nginx [rootwebserver…...
<数据集>柑橘缺陷识别数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:1290张 标注数量(xml文件个数):1290 标注数量(txt文件个数):1290 标注类别数:4 标注类别名称:[Orange-Green-Black-Spot, Orange-Black-Spot, Orange-Canker, Orange…...
Go开发后端和Vue3开发前端的前后端分离框架中自己手戳一个OA流程审批、工作流引擎给新时代一个漂亮便捷的工作流引擎
前言 在软件项目开发中,我们都会接触到流程审批的需要业务,我们以往用的最多就是如下图这种流程编辑引擎插件: 以上截图中的流程工具是不是大家常见的呀!感觉很丑拿不出手呀!在当前行业内卷及竞争激烈情况下ÿ…...
深入理解 toDto 与 toEntity:结合 Eladmin 框架的最佳实践
在现代软件开发中,尤其是后端开发中,数据传输对象(DTO)和实体对象的转换是一个常见且重要的操作。理解和正确实现这种转换不仅能提高代码的可维护性,还能提升应用的性能和安全性。本文将深入探讨 toDto 和 toEntity 方…...
基于区块链的供应链应用开发
区块链的供应链溯源应用开发 一 、环境准备 (1)更新镜像源 apt update(2)安装(openssl、jdk、git) apt -y install openssl default-jdk git(3)配置JAVA_HOME环境变量 echo “export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/” >> /etc/profilesource /etc…...
获取GORM执行时的sql字符串
示例: import "log" func GetDetail(tx *gorm.DB,id int)(data any,err error){var query tx.Session(&gorm.Session{DryRun: true})err query.Where("id ?", id).First(&res).Errorif err!nil{zap.L().Error("get detail er…...
Linux系统使用Docker安装RStudio服务并实现任意浏览器远程访问
文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 前言 RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE,并通过 Web 浏览器进行访问…...
【原创】springboot+mysql法律咨询网设计与实现
个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…...
Vue 应用实例的关键方法与配置案例二
目录 createApp createSSRApp app.mount app.unmount app.component app.directive Vue3.X自定义全局指令 Vue2.X自定义全局指令 app.use app.mixin 非 VIP 用户能够免费下载博文资源 createApp 详见上一章节:Vue 应用实例的关键方法与配置案例一-CSDN博客 createSS…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
