背景:
自動化測試不能只在測試環境運行,肯定要支持切換環境,所以就需要配置不同的配置文件,
比如settings_sit.py、settings_prod.py等,需要切換不同環境時只需要執行命令時指定配置文件即可。
simple-settings簡介:
simple-settings的靈感來自於Django的settings系統,但對於任何python項目都是通用的。
https://pypi.org/project/simple-settings/
安裝simple-settings
pip install simple-settings
配置conftest.py
from simple_settings import settings # 讓pytest認識--settings參數 def pytest_addoption(parser): parser.addoption('--settings', action='store')
配置文件
在項目根目錄下新增sit和prod環境的配置文件,里面是各個環境有差異的參數。
settings_sit.py
env = "SIT" host = "http://***.app.api.**" get_token_uri = "/login" # ACCOUNT orgCode = "****" userPhone = "*********" userPass = "********************"
settings_prod.py
env = "prod" host = "http://prod.****.com" get_token_uri = "/login" # ACCOUNT orgCode = "***" userPhone = "******" userPass = "***************"
使用配置文件中的參數
from simple_settings import settings def get_token(): """ :return: 返回接口所需token """ payload = {"userPhone": settings.userPhone, "userPass": settings.userPass, "orgCode": settings.orgCode} print("當前加載的環境為:{}".format(settings.env)) headers = { 'Content-Type': "application/json", 'imsi': "*******" } response = requests.post(settings.host + settings.get_token_uri, json=payload, headers=headers) print(response.text) return json.loads(response.text)["data"]["userToken"]
使用時需要先引入settings,然后直接settings.userPhone去調用配置文件中的參數,而不是使用settings_sit.userPhone
執行命令
pytest case\yjt_arrive_test.py --alluredir=report --clean-alluredir --settings=settings_sit
--settings=settings_sit:表示使用settings_sit.py配置文件中的參數執行腳本
到此就實現了指定配置文件運行測試的目標,用來覆蓋不用環境的測試
參考:https://stackoverflow.com/questions/54159045/create-different-environment-settings-in-pytest