2025年1月15日 星期三

Pytest - Using Configuration Files (Configparser)


在測試自動化中,我們常需針對不同環境進行測試,例如這些環境可能有不同的登入帳號和密碼。這時設定檔就顯得非常重要,我們儘量避免將登入帳號、使用者名稱或密碼之類的資訊嵌在程式碼中。除了機密性之外,每次修改設定資訊時都需要修改程式碼,會變得很麻煩且容易出錯。為了解決這些問題,我們可以使用Python中的configparser模組來讀取設定檔。這樣可以將設定資訊與程式碼分離,並且在不同的環境中重複使用相同的設定檔,易於維護。

如何使用configparser讀取設定檔

以下是如何使用Python的configparser模組來讀取INI格式的設定檔,並在測試中使用這些設定資訊。

1. 建立設定檔

首先,我們創建一個INI格式的設定檔 (qa.ini) 來儲存帳號、密碼等資訊:
[gmail]
url=qa.gmail.com
user = gmail_user1
pass = gmail_pass1

[outlook]
url=qa.outlook.com
user=outlook_user1
pass=outlook_pass1

2. 使用configparser讀取設定檔

接著,我們使用configparser模組來讀取設定檔中的資訊:
import configparser
from pathlib import Path #用來處理檔案路徑的模組

cfgFile = 'qa.ini'
cfgFileDirectory = 'config' #設定檔的目錄

config = configparser.ConfigParser() #建立ConfigParser物件

BASE_DIR = Path(__file__).resolve().parent.parent
CONFIG_FILE = BASE_DIR.joinpath(cfgFileDirectory).joinpath(cfgFile) #建構完整的設定檔路徑
config.read(CONFIG_FILE) #讀取設定檔

def getGmailUrl():
    return config['gmail']['url'] #獲取Gmail的URL

def getGmailUser():
    return config['gmail']['user'] #獲取Gmail的使用者名稱

def getGmailPass():
    return config['gmail']['pass'] #獲取Gmail的密碼

print(getGmailUrl())

3. 測試函式

from Pytest_Topics.utils.myconfigparser import get_gmail_url 

def test_get_gmail_url(): 
    print(get_gmail_url())
當執行這些測試時,就能夠正確獲得設定檔中的值,並且顯示預期的結果

沒有留言:

張貼留言