标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。