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

16. 通用配置文件开发.py

16. 通用配置文件开发.py

一、配置文件架构设计

1.1 模块化结构规划

配置文件
项目地址
路径管理
测试套件
浏览器配置
通用参数
浏览器专属参数

1.2 核心设计原则

  • 环境隔离:分离不同项目/模块配置
  • 路径动态化:自动适配不同操作系统
  • 开关控制:灵活启用/禁用功能模块
  • 参数集中化:统一管理运行配置

二、路径管理系统解析

2.1 动态路径构建

from os.path import dirname, joinBASE_PATH = dirname(__file__)  # 获取当前文件绝对路径
CHAPTER_1_PATH = join(BASE_PATH, 'chap3')  # 路径拼接
路径类型说明:
路径变量作用域典型值示例
BASE_PATH项目根目录/User/project/config
CHROME_DRIVER_PATH浏览器驱动/User/project/drivers/chrome
CHAPTER_1_PATH功能模块路径/User/project/chap3

三、测试套件组织方案

3.1 组合式套件配置

SUIT_MODULE_1 = [  # 基础测试套件'test_module_1.py','test_module_2.py'
]SUIT_PROJECT1 = [  # 项目级聚合套件'test_module_1.py','test_module_2.py','test_module_3.py'
]SUIT_PROJECT2 = SUIT_MODULE_2 + SUIT_MODULE_3  # 套件组合

3.2 套件管理策略

策略类型优势适用场景
模块化组合灵活重组测试范围持续集成环境
项目级聚合统一执行标准用例集版本发布验证
流程化分组保证测试顺序性业务流程验证

四、浏览器配置中心实现

4.1 通用参数配置

# 浏览器基础参数
HEADLESS = False  # 无头模式开关
IMP_TIME = 30     # 隐式等待(秒)
WINDOWS_SIZE = (1024, 768)  # 分辨率配置

4.2 Chrome专属配置

CHROME_METHOD_MARK = True  # 方法执行开关
CHROME_OPTION_MARK = True  # 参数启用开关CHROME_EXP = {  # 实验性参数'excludeSwitches': ['enable-automation'],# 'mobileEmulation': {'deviceName': 'iPhone 6'}
}CHROME_START_MAX = '--start-maximized'  # 启动参数
配置层次结构:
浏览器配置
├── 通用参数
│   ├── 无头模式
│   ├── 等待策略
│   └── 窗口管理
└── 浏览器专属├── Chrome│   ├── 实验参数│   └── 启动命令├── Edge└── Firefox

五、环境适配最佳实践

5.1 多环境支持方案

# 环境标识映射
ENV_MAP = {'dev': PROJECT_Oder_URL,'test': PROJECT_QQ_URL,'prod': PROJECT_DEMO_URL
}# 动态环境切换
CURRENT_ENV = ENV_MAP['dev']

5.2 配置安全策略

# 敏感信息加密存储
import base64DB_PASSWORD = base64.b64encode(b'secret').decode('utf-8')  # 加密示例

六、配置维护指南

6.1 版本控制规范

__version__ = '1.2.0'  # 配置文件版本
__maintainer__ = 'QA Team'  # 维护团队

6.2 变更日志示例

## 2024-03-20 v1.2.0
- 新增Edge浏览器配置项
- 优化路径动态生成逻辑
- 分离测试套件与环境配置

七、完整代码

"""
Python :3.13.3
Selenium: 4.31.0setting.py
"""# 项目地址
# 项目包和文件夹的路径
# 浏览器对象属性
# 测试套件from os.path import dirname, join# -------------------项目地址-----------------------
# 项目一的地址
PROJECT_Oder_URL = 'http://secure.smartbearsoftware.com/samples/testcomplete12/WebOrders/Login.aspx'# 项目二的地址
PROJECT_QQ_URL = ''# 项目三的地址
PROJECT_DEMO_URL = ''# -------------------项目包和文件夹的路径-----------------------
# 项目根目录
BASE_PATH = dirname(__file__)# 浏览器驱动文件地址
CHROME_DRIVER_PATH = join(BASE_PATH, 'drivers/chrome_driver.exe')
EDGE_DRIVER_PATH = join(BASE_PATH, 'driver/edge_driver.exe')# 项目模块路径
# 模块1路径
CHAPTER_1_PATH = join(BASE_PATH, 'chap3')
# 模块2路径
CHAPTER_2_PATH = join(BASE_PATH, 'chap4')
# 模块3路径
CHAPTER_3_PATH = join(BASE_PATH, 'chap5')# -------------------测试套件-----------------------
# 流程1相关测试套件
SUIT_MODULE_1 = ['test_module_1.py','test_module_2.py'
]# 流程2相关测试套件
SUIT_MODULE_2 = ['test_module_1.py','test_module_2.py','test_module_3.py'
]# 流程3相关测试套件
SUIT_MODULE_3 = ['test_module_4.py','test_module_5.py'
]# 项目一的主测试套件
SUIT_PROJECT1 = ['test_module_1.py','test_module_2.py','test_module_3.py']# 项目二的主测试套件
SUIT_PROJECT2 = SUIT_MODULE_2 + SUIT_MODULE_3# -------------------浏览器对象属性-----------------------
# 浏览器基本属性# 无头化
HEADLESS = False# 隐式等待时间
IMP_TIME = 30# 页面加载超时时间
PAGE_LOAD_TIME = 20# JS异步执行超时时间
SCRIPT_TIME_OUT = 20# 浏览器尺寸
WINDOWS_SIZE = (1024, 768)# -------------------CHROME浏览器属性-----------------------# chrome浏览器操作开关
CHROME_METHOD_MARK = True# chrome启动参数开关
CHROME_OPTION_MARK = True# chrome实验性质启动参数
CHROME_EXP = {'excludeSwitches': ['enable-automation'],# 'mobileEmulation': {'deviceName': 'iPhone 6'}}# chrome窗口大小启动参数
CHROME_WINDOWS_SIZE = (1920, 900)# chrome启动最大化参数
CHROME_START_MAX = '--start-maximized'# -------------------EDGE浏览器属性-----------------------
# -------------------FIREFOX浏览器属性-----------------------

记得导入setting.py后(from setting import *),对应的代码需要修改,例如:ob.py,start.py,po.py这三个文件里面的参数的值要修改。


「小贴士」:点击头像→【关注】按钮,获取更多软件测试的晋升认知不迷路! 🚀

相关文章:

16. 通用配置文件开发.py

16. 通用配置文件开发.py 一、配置文件架构设计 1.1 模块化结构规划 #mermaid-svg-Iuex47psGWeZj6XQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Iuex47psGWeZj6XQ .error-icon{fill:#552222;}#mermaid-svg-Iu…...

Python训练营打卡 Day29

复习日:类的装饰器 知识点回顾 类的装饰器:餐厅升级计划 假设你是一家餐厅的老板,餐厅已经运营了一段时间,但你希望提升服务质量,比如在每道菜上增加一些特别的服务(比如日志记录、额外的装饰等&#xff09…...

解决 Tailwind CSS 代码冗余问题

解决 Tailwind CSS 代码冗余问题 Tailwind CSS 确实可能导致 HTML 类名过长和冗余的问题,以下是几种有效的解决方案: 1. 使用 apply 指令提取重复样式 /* 在CSS文件中 */ .btn {apply px-4 py-2 rounded-md font-medium; }.card {apply p-6 bg-white …...

【藏经阁】加密机服务完整解决方案,包含客户端+服务端

前言 你是否存在这样的苦恼,数据需要安全存储,但是每个系统大家自己写,很浪费时间。 encryption-local 一个离线版本的金融敏感信息加解密工具,用于数据库敏感信息存储。 离线版本的加解密好处是非常的方便。不过缺点也比较明显…...

互联网大厂Java求职面试:AI与大模型应用集成及云原生挑战

互联网大厂Java求职面试:AI与大模型应用集成及云原生挑战 面试场景设定 郑薪苦是一位具有搞笑风格但技术潜力巨大的程序员,正在接受一位严肃专业的技术总监面试。 第一轮提问 面试官:在我们公司的短视频平台中,需要处理千万级…...

ffmpeg -vf subtitles添加字幕绝对路径问题的解决方法

今天遇到奇怪的问题,老是报 Unable to parse option value Error applying option original_size to filter subtitles: Invalid argument 踩坑很长时间,记录下 因subtitles需要指定绝对路径, 注意点: 外面要用单引号 不能…...

JetBrains IDEA,Android Studio,WebStorm 等IDE 字体出现异常时解决方法

JetBrains IDEA,Android Studio,WebStorm 等IDE 中文字体出现异常,很怪的时候,通常需要设置字体回退才能解决。 需要在 Font 中将字体连写打开,并且设置字体回退为 Microsoft YaHei Ul 只有这样 IDEA 在没有中文字体的样式下,会将…...

鸿蒙AI开发:10-多模态大模型与原子化服务的集成

鸿蒙AI开发:10-多模态大模型与原子化服务的集成 在鸿蒙生态中,多模态大模型与原子化服务的集成是一个重要课题。本文将介绍如何在鸿蒙平台上进行多模态大模型与原子化服务的集成,以及相关的技术细节和实际案例。 鸿蒙AI开发概述 什么是鸿蒙AI…...

信奥赛CSP动态规划入门-最大子段和

针对**“最大子段和”**问题的详细分步解析与程序实现,通过动态规划将大问题分解为小问题: 一、问题拆解步骤 1. 明确问题定义 大问题:在数组[-2,1,-3,4,-1,2,1]中,找到连续子数组的和的最大值。 小问题:以每个位置i结尾的子数组能得到的最大和。 2. 状态定义 定义数组…...

Python爬虫实战:通过PyExecJS库实现逆向解密

1. 核心定义 1.1 PyExecJS 库 PyExecJS 是 Python 的第三方库,通过调用 JavaScript 运行时环境(如 Node.js、PhantomJS),实现 Python 与 JavaScript 的无缝交互。其核心功能包括: JavaScript 代码编译与执行跨语言函数调用与数据传递多引擎支持与自动环境检测1.2 字段加…...

网络安全深度解析:21种常见网站漏洞及防御指南

一、高危漏洞TOP 10 1. SQL注入(SQLi) 原理:通过构造恶意SQL语句突破系统过滤机制 典型场景: - 联合查询注入: union select 1,version(),3--+ - 布尔盲注:and (select substr(user(),1,1)=r) - 时间盲注:;if(now()=sysdate(),sleep(5),0)/ 防御方案: - 严格参数化查…...

web系统安全管理

一、概述 认证、授权是JavaWeb项目的核心部分。 二、相关概念 1、认证Authentication 认证,简单来说,就是确认用户身份的过程,确认“你是谁”(验证身份)。 2、授权(Authorization) 授权&…...

相机基础常识

相机基础常识 相机中颜色滤镜的作用🎨 1. **捕捉彩色图像**✅ 最常见的颜色滤镜阵列是 **拜耳滤镜(Bayer Filter)**: 🔍 2. **实现特定的图像效果或分析功能**✅ 常见的滤镜类型包括: 🛠️ 3. *…...

Python训练营打卡Day29

复习日:类的装饰器 知识点回顾 类的装饰器装饰器思想的进一步理解:外部修改、动态类方法的定义:内部定义和外部定义 1. 类的装饰器 类的装饰器是一种特殊的函数,用于修改或扩展类的行为。它们在类定义时被应用,类似于函…...

不同版本 Linux 系统账号操作指令 ——rtkit 账号删除、普通账号的创建 / 删除 / 权限修改超详细大全

不同版本 Linux 系统账号操作指令 ——rtkit 账号删除、普通账号的创建 / 删除 / 权限修改超详细大全 安全提醒 先备份:/etc/passwd 、/etc/shadow 、/etc/group 、/etc/sudoers 以及 Home 目录。系统账户慎删:rtkit 属于实时调度守护进程 RealtimeKit&…...

基于 Zookeeper 部署 Kafka 集群

文章目录 1、前期准备2、安装 JDK 83、搭建 Zookeeper 集群3.1、下载3.2、调整配置3.3、标记节点3.4、启动集群 4、搭建 Kafka 集群4.1、下载4.2、调整配置4.3、启动集群 1、前期准备 本次集群搭建使用:3 Zookeeper 3 Kafka,所以我在阿里云租了3台ECS用…...

Listener method could not be invoked with the incoming message

问题描述 生产者方代码: private void rollbackOrder(long orderId, CorrelationData correlationData) {rabbitTemplate.convertAndSend("order-rollback-exchange","rollback.order",new QuotaRollbackTO(orderId,null,null),correlationData…...

VueUse/Core:提升Vue开发效率的实用工具库

文章目录 引言什么是VueUse/Core?为什么选择VueUse/Core?核心功能详解1. 状态管理2. 元素操作3. 实用工具函数4. 浏览器API封装5. 传感器相关 实战示例:构建一个拖拽上传组件性能优化技巧与原生实现对比常见问题解答总结 引言 在现代前端开发…...

记录一次win11本地部署deepseek的过程

20250518 win11 docker安装部署 ollama安装 ragflow部署 deepseek部署 文章目录 1 部署Ollama下载安装ollama配置环境变量通过ollama下载模型deepseek-r1:7b 2 部署docker2.1 官网下载amd版本安装2.2 配置wsl2.3 Docker配置:位置代理镜像源 3 部署RAGFlow更换ragfl…...

PrimeVul论文解读-如何构建高质量漏洞标签与数据集

目录 1. 引入2. 现有漏洞识别方案的不足2.1 数据集中label不准2.2 数据重复2.3 测评标准不够好 3. 现有漏洞识别数据集分析3.1 关于现有数据集中label的准确率分析3.2 关于现有数据集中数据泄露( Data Leakage)情况分析 4. 漏洞识别测评5. PrimeVul数据集…...

现代生活健康养生新视角

在科技飞速发展的今天,我们的生活方式发生巨大转变,健康养生也需要新视角。从光线、声音等生活细节入手,能为健康管理开辟新路径。​ 光线与健康密切相关。早晨接触自然光线,可调节生物钟,提升血清素水平,…...

开启健康生活的多元养生之道

健康养生是一门值得终身学习的学问,在追求健康的道路上,除了常见方法,还有许多容易被忽视却同样重要的角度。掌握这些多元养生之道,能让我们的生活更健康、更有品质。​ 室内环境的健康不容忽视。定期清洁空调滤网,避…...

Flink 并行度的设置

在 Apache Flink 中,并行度(Parallelism) 是控制任务并发执行的核心参数之一。Flink 提供了 多个层级设置并行度的方式,优先级从高到低如下: 🧩 一、Flink 并行度的四个设置层级 层级描述设置方式Operator…...

抖音视频怎么去掉抖音号水印

你是不是经常遇到这样的烦恼?看到喜欢的抖音视频,想保存下来分享给朋友或二次创作,却被抖音号水印挡住了画面?别着急,今天教你几种超简单的方法,轻松去除水印,高清无水印视频一键保存&#xff0…...

类的加载过程详解

类的加载过程详解 Java类的加载过程分为加载(Loading)、链接(Linking) 和 初始化(Initialization) 三个阶段。其中链接又分为验证(Verification)、准备(Preparation&…...

运行:MSI Afterburner报错:应用程序无法启动并行配置不正确

从日志中可以看出,MSI Afterburner 运行时因缺少关键依赖组件(Microsoft.VC90.MFC)导致激活上下文生成失败。这是典型的 Visual C 运行时库缺失/版本不匹配 问题,与您提到的 for %1 in (%windir%\system32\*.dll) do regsvr32.exe…...

基于智能家居项目 ESP8266 WiFi 模块通信过程与使用方法详解

一、ESP8266 简介 ESP8266 是由乐鑫科技(Espressif)推出的一款低功耗、高集成度的 WiFi SoC 芯片。它内置 TCP/IP 协议栈,支持 STA(Station)、AP(Access Point)和 STA+AP 混合模式,可以独立作为主控 MCU 或配合其它主控(如 STM32、Arduino)通过串口通信使用。 常见…...

字节跳动开源通用图像定制模型DreamO,支持风格转换、换衣、身份定制、多条件组合等多种功能~

项目背景分析 图像定制是一个快速发展的领域,包括身份(ID)、风格、服装试穿(Try-On)等多种任务。现有研究表明,大规模生成模型在这些任务上表现出色,但大多数方法是任务特定的,难以推…...

Cursor:简单三步提高生成效率

第一步:结构化提示词——像写需求文档一样对话 常见误区:“做个知识管理模块,用SpringBoot。” 问题:AI会陷入迷茫——需要哪些字段?分页怎么做?异常处理是否需要? 正确写法: Note C…...

第二章 苍穹外卖

开发环境搭建_后端环境搭建_熟悉项目结构 constant:存储的是定义好的常量类 context:存储与上下文相关的 enumeration:存储枚举类 exception:存储一些异常 json:处理一些json转换的类 properties:存储一些配置类 …...

【上位机——WPF】命名空间

概述 XAML命名空间实际上是XML命名空间概念的扩展。指定XAML命名空间的技术依赖于XML命名空间语法、使用URL作为命名空间标识符的约定,使用前缀提供从同一标记源中引用多个命名空间的方法,诸如此类,XML命名空间的XAML定义中增加的主要概念是…...

当AI自我纠错:一个简单的“Wait“提示如何让模型思考更深、推理更强

原论文:s1: Simple test-time scaling 作者:Niklas Muennighoff, Zitong Yang, Weijia Shi等(斯坦福大学、华盛顿大学、Allen AI研究所、Contextual AI) 论文链接:arXiv:2501.19393 代码仓库:GitHub - simp…...

【聚类】 K-means

K-means 文章目录 K-means1. 算法介绍2. 公式及原理3. 伪代码1. 算法介绍 背景与目标 K-means 是最经典、最常用的原型聚类(prototype-based clustering)算法之一,由 Stuart Lloyd 于1957年提出,1982年被广泛推广。其核心目标是: 将给定的 n n n 个数据点划分为 K K K 个…...

matlab分段函数

在 MATLAB 中&#xff0c;定义分段函数可以使用 piecewise 函数或者条件语句&#xff08;如 if、else&#xff09;来实现。以下是两种常见方法的示例&#xff1a; 1. 使用 piecewise 函数&#xff08;适用于符号函数&#xff09; syms x f piecewise(x < 0, x^2, x > …...

《Vite 报错》ReferenceError: module is not defined in ES module scope

trip): [ReferenceError] module is not defined in ES module scope 解决方案 postcss.config.js 要改为 postcss.config.cjs&#xff0c;也就是 .cjs 后缀。 原因解析 原因解析 下图提示&#xff0c;packages.json 中的属性 type 设置为 module。所有*.js文件现在都被解释…...

基于matlab/simulink锂电池算法学习集合(SOC、SOH、BMS)

一、引言概述。 锂电池是目前在各个能源密集型行业中用途广泛&#xff0c;例如新能源汽车、电力微网、航空航天等。电池模型的建立对研究电池的特性、SOC(state-of-charge)估计、SOH(state-of-health)估计、BMS算法开发以及电池系统的快速实时仿真有重要的意义。 等效电路建模…...

10.8 LangChain三大模块深度实战:从模型交互到企业级Agent工具链全解析

LangChain Community 项目:Model I/O, Retrieval, Agent Tooling 关键词:LangChain Model I/O, 检索增强生成, Agent 工具链, 多路召回策略, 工具调用协议 1. Model I/O 模块:大模型交互标准化接口 Model I/O 是 LangChain 生态中连接大模型的核心模块,定义了统一的输入输…...

408考研逐题详解:2009年第16题

2009年第16题 某机器字长为 16 位&#xff0c;主存按字节编址&#xff0c;转移指令采用相对寻址&#xff0c;由两个字节组成&#xff0c;第一个字节为操作码字段&#xff0c;第二个字节为相对位移量字段。假定取指令时&#xff0c;每取一个字节 PC 自动加 1。若某转移指令所在…...

python打卡day29@浙大疏锦行

知识点回顾 类的装饰器装饰器思想的进一步理解&#xff1a;外部修改、动态类方法的定义&#xff1a;内部定义和外部定义 作业&#xff1a;复习类和函数的知识点&#xff0c;写下自己过去29天的学习心得&#xff0c;如对函数和类的理解&#xff0c;对python这门工具的理解等&…...

双紫擒龙紫紫红指标源码学习,2025升级版紫紫红指标公式-重点技术

VAR1:MA((LOWHIGHCLOSE)/3,5); VAR2:CLOSEHHV(C,4) AND REF(C,1)LLV(C,4); 双紫擒龙:REF(C,1)LLV(C,4) AND C>REF(C,2) OR REF(C,2)LLV(C,4) AND REF(C,1)<REF(C,3) AND REF(C,2)<REF(C,4) AND C>REF(C,1); VAR4:VAR1>REF(VAR1,1) AND REF(VAR1,1)<REF(VAR1,…...

Redis学习打卡-Day3-分布式ID生成策略、分布式锁

分布式 ID 当单机 MySQL 已经无法支撑系统的数据量时&#xff0c;就需要进行分库分表&#xff08;推荐 Sharding-JDBC&#xff09;。在分库之后&#xff0c; 数据遍布在不同服务器上的数据库&#xff0c;数据库的自增主键已经没办法满足生成的主键全局唯一了。这个时候就需要生…...

​在 ASP.NET 中,HTTP 处理程序(HttpHandler)是处理 HTTP 请求的核心组件​

ASP.NET 中 HttpHandler 的用法详解 在 ASP.NET 中&#xff0c;HTTP 处理程序&#xff08;HttpHandler&#xff09;是处理 HTTP 请求的核心组件。根据你的配置文件&#xff0c;我将详细解释 <handlers> 节点的各种用法和配置选项。 1. HttpHandler 概述 HttpHandler 是…...

Word文档图片和图表自动添加序号

0 Preface/Foreword Word文档是办公常用的文档&#xff0c;里面经常会插入图片或者表格&#xff0c;当表格和图片数量过多时&#xff0c;如果有些图片需要删除或者添加&#xff0c;那么大概率需要修改大量图片的序号或者引用记录&#xff0c;如果通过手工一个一个修改&#xf…...

Android开发-列表类视图

在Android应用开发中&#xff0c;列表类视图&#xff08;List View&#xff09; 是展示数据集的重要UI组件之一。无论是显示联系人列表、新闻文章还是产品目录&#xff0c;列表类视图都能提供一个高效且用户友好的方式来呈现信息。本文将详细介绍如何使用 ListView 和更现代的 …...

如何使用 Apple 提供的 benchmark 工具

目录 &#x1f9ed; Apple 提供的 benchmark 工具有哪些&#xff1f; ✅ 方式一&#xff1a;使用 Core ML Benchmark Tool&#xff08;推理性能测试&#xff09; &#x1f527; 安装方式&#xff08;推荐用 Python 工具&#xff09; ✅ 方式二&#xff1a;使用 Instruments…...

第11章 JDBC与MySQL数据库

11.1 MySQL数据库管理系统 11.2 启动MySQL数据库服务器 在MySQL安装目录的bin子目录下键入mysqld或mysqld -nt 启动MySQL数据库服务器。 11.3 MySQL客户端管理工具 11.4 JDBC 对于JDK8版本&#xff0c;可以数据库连接器到JDK的扩展目录中&#xff08;即JAVA_HOME环境变量指…...

Python 向量化操作如何实现多条件筛选

在处理大量数据时&#xff0c;高效的数据筛选是数据分析和科学计算中的关键环节。Python 的 numpy 库以其强大的向量化操作功能&#xff0c;能够帮助我们快速、高效地实现多条件筛选&#xff0c;避免使用低效的循环结构。 NumPy 向量化操作与布尔筛选基础 NumPy 是 Python 中用…...

内容社区系统开发文档(下)

目录 4 系统测试 4.1 数据库测试设计 测试流程图 测试策略矩阵 4.2 数据库测试内容 测试点 1&#xff1a;数据项增删改查&#xff08;CRUD&#xff09;操作 和 数据一致性测试 一、基础数据初始化 二、用户表测试&#xff08;users&#xff09; 1. 新增用户 2. 更新…...

什么是迁移学习(Transfer Learning)?

什么是迁移学习&#xff08;Transfer Learning&#xff09;&#xff1f; 一句话概括 迁移学习研究如何把一个源领域&#xff08;source domain&#xff09;/源任务&#xff08;source task&#xff09;中获得的知识迁移到目标领域&#xff08;target domain&#xff09;/目标任…...

CMake调试与详细输出选项解析

在使用 CMake 进行项目构建和编译时&#xff0c;--debug-output 和 --verbose 的作用如下&#xff1a; 1. --debug-output 适用阶段&#xff1a;CMake 配置阶段&#xff08;运行 cmake 命令生成构建系统时&#xff09;。作用&#xff1a; 启用 CMake 内部的调试输出&#xff0…...