一键切换测试环境:Windows 下环境变量设置指南

教你如何通过一个命令让测试脚本自动识别不同环境的配置文件

你是否遇到过这种情况:同一套测试脚本,需要在测试环境、开发环境、预发布环境、生产环境等多种配置中切换?每次都要手动修改配置文件,既麻烦又容易出错。

本文将介绍一种简洁高效的解决方案——通过环境变量控制测试脚本读取不同的配置文件,让你轻松实现"一键切换"测试环境。

一、基本原理:脚本如何知道该读取哪个文件?

测试脚本中通常有这样一段代码:

path_env = "env/" + os.getenv("interface_env", default="test")

这段代码的意思是:

  1. 尝试获取名为 interface_env 的系统环境变量
  2. 如果找不到,就使用默认值 "test"
  3. 最终拼接成配置文件路径:env/xxx.yaml

这样,只需要改变环境变量的值,脚本就会自动加载不同环境的配置文件。

二、Windows 下两种终端的设置方法对比

Windows 系统中有两种常见命令行工具,它们设置环境变量的方式有所不同:

功能PowerShell(推荐)CMD(传统命令行)
设置环境变量$env:变量名="值"set 变量名=值
查看环境变量$env:变量名set 变量名
运行测试命令pytest .\test_Mulit_env.pypytest .\test_Mulit_env.py
示例$env:interface_env="develop"set interface_env=develop

三、四套环境配置详解

不同环境在软件开发和测试过程中扮演着不同角色,以下是各环境的配置差异全景图:
在这里插入图片描述

具体配置文件示例

开发环境配置:env/develop.yaml
# 开发环境 - 供研发联调使用
base:api_url: "http://192.168.1.100:8080/api/v1"web_url: "http://192.168.1.100:3000"
database:host: "dev-mysql.db.example.com"username: "test_dev"password: "dev_123456"name: "order_db_dev"
auth:admin_token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxMDAwMH0"
log:level: "DEBUG"
测试环境配置:env/test.yaml
# 测试环境 - 供QA团队系统测试
base:api_url: "https://test-api.example.com/api/v1"web_url: "https://test.example.com"
database:host: "test-mysql.db.example.com"username: "qa_tester"password: "QA_2024_secure_PWD!"name: "order_db_test"
auth:test_username: "qa_user01"test_password: "QaTesterPassword!2024"
log:level: "INFO"
预发布环境配置:env/staging.yaml
# 预发布环境 - 上线前最终验证,无限接近生产环境
base:api_url: "https://staging-api.example.com/api/v1"web_url: "https://staging.example.com"
database:host: "prod-ro-mysql.db.example.com"  # 生产库只读从库username: "staging_reader"password: "Staging_Read_0nly_2024!"   # 只读权限name: "order_db_prod"
auth:# 必须使用真实业务流程获取认证test_username: "real_user@example.com"  # 真实测试账号test_password: ""
log:level: "WARN"  # 接近生产环境的日志级别
performance:# 预发布环境性能要求较高timeout: 5000retry_attempts: 2
生产环境配置:env/production.yaml
# 生产环境 - 线上真实环境
base:api_url: "https://api.example.com/api/v1"web_url: "https://www.example.com"
database:host: "prod-mysql-cluster.db.example.com"  # 生产数据库集群username: "prod_application"password: "Prod_Super_Secure_P@ssw0rd_2024!"  # 高强度密码name: "order_db_prod"
auth:# 生产环境使用正规认证流程oauth_url: "https://auth.example.com/oauth/token"client_id: "production_client"client_secret: "************************"
log:level: "ERROR"  # 生产环境只记录错误日志sensitive_data_mask: true  # 敏感数据脱敏
monitoring:# 监控和告警配置enabled: truealert_email: "ops@example.com"

四、完整操作步骤

方法一:使用 PowerShell(推荐)

# 设置环境变量(仅对当前窗口有效)
$env:interface_env = "develop"# 运行测试脚本
pytest .\test_Mulit_env.py# 验证是否设置成功(可选)
echo $env:interface_env

方法二:使用 CMD(传统命令行)

:: 设置环境变量(仅对当前窗口有效)
set interface_env=develop:: 运行测试脚本
pytest .\test_Mulit_env.py:: 验证是否设置成功(可选)
set interface_env

五、效果验证

执行上述命令后,测试脚本会自动加载对应的配置文件:

  • 设置 interface_env="develop" → 加载 env/develop.yaml
  • 设置 interface_env="test" → 加载 env/test.yaml
  • 设置 interface_env="staging" → 加载 env/staging.yaml
  • 设置 interface_env="production" → 加载 env/production.yaml
  • 不设置任何值 → 使用默认值,加载 env/test.yaml

六、常见问题与解决方案

问题原因解决方法
设置不生效环境变量设置错误或未生效通过echo $env:interface_envset interface_env验证
权限不足当前用户没有权限设置环境变量以管理员身份运行终端
仅当前窗口有效环境变量设置是会话级别的需要永久生效请通过系统属性设置环境变量
脚本找不到文件配置文件路径或名称不正确检查env/目录下是否存在对应的yaml文件

七、高级技巧

1. 批量设置多个环境变量

# 一次性设置多个环境变量
$env:interface_env="develop"
$env:database_env="test"
$env:log_level="debug"

2. 使用脚本自动化

创建一个setup_test.ps1脚本:

# setup_test.ps1
param($env_name = "test")
$env:interface_env = $env_name
pytest .\test_Mulit_env.py

然后只需执行:

.\setup_test.ps1 "staging"

八、总结

通过环境变量控制测试脚本的行为是一种简单而有效的方法,特别适用于多环境测试场景。只需记住:

  1. PowerShell 中使用 $env:interface_env="环境名称"
  2. CMD 中使用 set interface_env=环境名称
  3. 执行 pytest .\test_Mulit_env.py 运行测试

这种方法不仅减少了手动修改配置文件的麻烦,还提高了测试的可靠性和可重复性,是自动化测试中的一项实用技巧。

通过不同的配置文件,我们可以轻松管理各种环境的差异,让测试工作更加高效和规范。

希望本文能帮助你更好地管理测试环境配置。如果有任何问题或建议,欢迎在评论区留言讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/95265.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95265.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/95265.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

备份压缩存储优化方案:提升效率与节省空间的完整指南

在数字化时代,数据备份已成为企业运营的关键环节。本文将深入探讨备份压缩存储优化方案,从技术原理到实施策略,为您提供一套完整的存储空间节省与性能提升解决方案。我们将分析不同压缩算法的适用场景,揭示存储架构优化的关键技巧…

【图像算法 - 25】基于深度学习 YOLOv11 与 OpenCV 实现人员跌倒识别系统(人体姿态估计版本)

摘要: 本文将详细介绍如何利用先进的深度学习目标检测算法 YOLOv11 结合 OpenCV 计算机视觉库,构建一个高效、实时的人员跌倒识别系统。跌倒检测在智慧养老、安防监控、工业安全等领域至关重要。我们将从环境搭建、数据准备、模型训练到跌倒行为判断逻辑…

数据结构--栈(Stack) 队列(Queue)

一、栈&#xff08;Stack&#xff09;1. 栈的定义栈&#xff08;Stack&#xff09;是一种 先进后出&#xff08;LIFO, Last In First Out&#xff09; 的数据结构。就像一摞书&#xff1a;最后放的书最先拿走。2. 栈的常用方法&#xff08;Stack 类&#xff09;Stack<E> …

FART 主动调用组件深度解析:破解 ART 下函数抽取壳的终极武器

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ FART 的主动调用组件 在 Android 逆向与脱壳领域&#xff0c;早期的自动化脱壳方案&#xff08;如 DexHunter、FUPK3&#xff09;主要运行在 Dalvik 环境&…

基于有限元分析法的热压成型过程中结构变形和堆积matlab模拟与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.部分程序 4.算法理论概述 5.完整程序 1.程序功能描述 在压印过程中&#xff0c;一般情况下&#xff0c;我们遵循质量&#xff0c;动量和能量守恒的原则进行仿真。然后建立偏微分方程组&#xff0c;然后通过有限元的…

CF每日3题(1500-1600)

1809C 神必构造题 对子数组的和考虑使用前缀和&#xff0c;发现逆序对的规律&#xff0c;构造1797C 神奇交互题 需要找特殊的点确定位置2132D 神奇数位题 需要用二分logk优化复杂度&#xff0c;把数位转换成能到的上限数aim 1809C 构造 前缀和 逆序对 思维 排序 1500 /* 神必构…

Linux学习——sqlite3

1.sqlite3的使用1.打开数据库sqlite3 stu.db //database2.操作输入 sqlite3&#xff0c;进入软件后&#xff0c;输入 sqlite3 软件自带的命令&#xff08;.help&#xff0c;.databases&#xff0c;quit&#xff0c;.exit&#xff09;3.增删改查增CREATE TABLE database_name.…

【线性代数基础 | 那忘算9】基尔霍夫(拉普拉斯)矩阵 矩阵—树定理证明 [详细推导]

之前学的不扎实导致现在还得回来再学。 专栏指路&#xff1a;《再来一遍一定记住的算法&#xff08;那些你可能忘记了的算法&#xff09;》 前置知识&#xff1a; 生成树&#xff1a;在一个无向连通图中&#xff0c;能够连接所有顶点的树结构。 点的度数&#xff1a;与这个点…

Chrome高危零日漏洞PoC公开,已被用于野外攻击

谷歌此前披露了Chrome浏览器V8 JavaScript引擎中存在一个高危零日漏洞&#xff08;CVE-2025-5419&#xff09;。而在近日&#xff0c;该漏洞的概念验证&#xff08;PoC&#xff09;利用代码已被公开。相关补丁已经发布&#xff0c;用户应尽快进行更新。 **核心要点** 1. CVE-2…

HTTP 接口调用工具类(OkHttp 版)

说明 HTTP 基本知识序号方法请求体描述1GET一般没有&#xff0c;可以有从服务器获取资源。用于请求数据而不对数据进行更改。例如&#xff0c;从服务器获取网页、图片等。2POST有向服务器发送数据以创建新资源。常用于提交表单数据或上传文件。发送的数据包含在请求体中。3PUT有…

Spring/Spring MVC/iBATIS 应用 HTTP 到 HTTPS 迁移技术方案

Spring/Spring MVC/iBATIS 应用 HTTP 到 HTTPS 迁移技术方案概述本方案详细介绍了将基于 Spring、Spring MVC 和 iBATIS 的传统 Java Web 应用从 HTTP 迁移到 HTTPS 的完整流程。这种传统架构的迁移需要考虑更多手动配置和兼容性问题。一、环境评估与准备工作1.1 当前环境分析首…

多智能体系统设计:5种编排模式解决复杂AI任务

当你有一个由研究员、文案、数据分析师和质检员组成的团队时&#xff0c;如果没有合理的协调机制&#xff0c;再优秀的个体也可能产生冲突的结论、停滞的流程&#xff0c;或者解决错误的问题。AI智能体同样如此。 随着系统从单体模型向多智能体架构演进&#xff0c;编排成为核…

CVPR上的多模态检索+视频理解,LLM助力提效翻倍

关注gongzhongaho【CVPR顶会精选】多模态研究正处在爆发期&#xff0c;从图文融合到视频、语音、传感器数据&#xff0c;模型能力边界不断扩展。顶会顶刊已将其视为具身智能与通用AI的核心方向。但写论文时常遇到痛点&#xff1a;方法多、任务杂&#xff0c;缺乏统一框架&#…

Docker部署单节点使用KRaft模式的Kafka3.8.0版本与可视化界面Kafka-Map

记录一下Docker部署单节点Kafka与部署可视化界面KafkaMap容器 目录 一、Kafka早已经弃用了ZooKeeper 二、Docker部署单机版Kafka 1、--name kafka-server 2、--network kafka-stand 3、--restart unless-stopped 4、-p 9092:9092 5、-p 9093:9093 6、-e ALLOW_PLAINTE…

Elasticsearch面试精讲 Day 2:索引、文档与映射机制

【Elasticsearch面试精讲 Day 2】索引、文档与映射机制 在“Elasticsearch面试精讲”系列的第二天&#xff0c;我们将深入探讨索引&#xff08;Index&#xff09;、文档&#xff08;Document&#xff09;与映射&#xff08;Mapping&#xff09;机制。这是Elasticsearch中最基础…

Vue2 与 Vue3 路由钩子的区别及用法详解

Vue2 与 Vue3 路由钩子的区别及用法详解 一、核心区别概览特性Vue2 (选项式API)Vue3 (组合式API)定义方式组件选项形式在setup()中调用函数形式钩子名称beforeRouteEnter/Update/LeaveonBeforeRouteUpdate/Leavethis访问beforeRouteEnter不能访问this无this概念&#xff0c;直接…

STM32的内存分配与堆栈

使用过cortex-M4内核单片机的朋友对下面这张图一定不会感到陌生&#xff0c;它是ST原厂手册里面的memory map&#xff0c;里面的信息量其实非常多&#xff0c;今天简单说明一部分。我们在编写stm32代码的时候最长使用的地址有两块&#xff0c;第一块是0x0000 0000~0x3FFF FFFF,…

OpenStack 03:创建实例

修改默认安全组 管理规则 添加规则 添加端口22规则 添加ping 规则 下载镜像文件 Get images — Virtual Machine Image Guide documentation https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/42/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-42-1.1.x86_64.qcow2 …

企业级架构师综合能力项目案例一(各种组件集群搭建+SpringBoot整合)

架构图 用户请求 → Nginx → Spring Cloud Gateway → 微服务集群↓MySQL集群主从复制(ShardingSphere) Redis集群主从复制(Sentinel)ES集群 MongoDB集群(分片)RocketMQ集群 Seata分布式事务搭建集群 Nginx集群和配置┌─────────…

学习stm32 窗口看门狗

窗口看门狗1.WWDG简介窗口看门狗用于监测单片机程序运行时效是否精准&#xff0c;主要检测软件异常&#xff0c;一般用于需要精准检测程序运行时间的场合。不仅防止程序 “卡死不喂狗”&#xff0c;还能避免程序 “异常早喂狗”&#xff08;如死循环中误执行喂狗指令&#xff0…