【python+requests】一鍵切換測試環境:Windows 下環境變量設置指南

一鍵切換測試環境: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…