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 caseyjt_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

原文地址:https://www.cnblogs.com/gcgc/p/15320899.html