ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-08-18 14:03:02  阅读:391  来源: 互联网

标签:8888 xxxx conf pytest Pytest ini env http


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

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

    • 增加全局变量[global]段
    • 增加不同环境的[dev]、[prod]段
# 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

 

标签:8888,xxxx,conf,pytest,Pytest,ini,env,http
来源: https://www.cnblogs.com/cjdzalx/p/15156428.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有