微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pytest使用pytest.ini实现多域名切换

最近遇到一个问题,在写接口测试脚本时,现在的项目需要调用两个url,原来一直使用pytest_base_url来控制,切换base_url配置。现在项目有两个url抓瞎了。现找到一个方法,以做记录。

这里考虑借用pytest.ini来完成配置,由于pytest.ini实际只使用了一个[pytest]段,我们可以增加其他段的配置,比如

# pytest.ini
[pytest]

env = prod

[global]
url1 =  http://xxx:8888
url2 =  http://xxx:7010

[prod]
url3 =  http://xxxx:8888
url4 =  http://xxxx:7010

[dev]
url5 =  http://xxxx:8888
url6 =  http://xxx:7010

这里我们需要增加一个命令行选项--env和配置项env来选择使用的环境,并根据环境加载对应环境的变量,全局变量认加载

# conftest.py
def pytest_addoption(parser):
    parser.addoption("--env", action="store", help="choose env: dev,prod")
    parser.addini('env', help="choose env: dev,prod")


@pytest.fixture(scope='session')
def env_vars(request):
    config = request.config
    cur_env = config.getoption('--env') or  config.getini('env')
    inifile = config.inifile
    conf = ConfigParser()
    conf.read(inifile)
    variables = {}
    if conf.has_section('global'):
        variables.update(conf.items('global'))
    if conf.has_section(cur_env):
        variables.update(conf.items(cur_env))
    return variables

这里编写了一个名为env的fixture方法来拿到指定环境配置的变量,以及全局变量内容,用例使用方法如下:

# test_demo.py

def test_demo(env_vars):
    print(env_vars)

# 结果如下:
{'url1': 'http://xxxx:8888', 'url2': 'http://xxxx:7010', 'url3': 'http://xxxx:8888', 'url4': 'http://xxxx:7010'}

#可以通过Key取值,取出需要的环境url,如:env_vars['url1']

项目中使用截图:

 

 

 

本文为转载学习使用,原文地址:https://www.cnblogs.com/superhin/p/14975057.html

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐