pytest--使用第三方庫simple-settings實現多個環境切換


背景:

  自動化測試不能只在測試環境運行,肯定要支持切換環境,所以就需要配置不同的配置文件,

比如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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM