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