测试框架中往往要实现环境切换和环境变量的选择,一般的实现方案
- 使用pytest-base-url,切换base_url配置
- 使用pytest-variables,配合不同的test.json/beta.json/prod.json文件来实现
使用的问题
- 是json编辑容易出错
- 需要建立额外的多个数据文件
这里考虑借用pytest.ini来完成配置,由于pytest.ini实际只使用了一个[pytest]段,我们可以增加其他段的配置,比如
- 增加全局变量[global]段
- 增加不同环境的[test]、[beta]、[prod]段
如下
# pytest.ini
[pytest]
addopts = -qs
env = prod
[global]
a = 1
b = 2
[test]
a=2
[beta]
a=3
[prod]
a=4
这里我们需要增加一个命令行选项–env和配置项env来选择使用的环境,并根据环境加载对应环境的变量,全局变量则默认加载
# conftest.py
from configparser import ConfigParser
import pytest
def pytest_addoption(parser):
parser.addoption("--env", action="store", help="choose env: test,beta,prod")
parser.addini('env', help="choose env: test,beta,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_demo1.py def
test_demo1(env_vars):
print(env_vars)
实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,
测试开发视频教程、学习笔记领取传送门!!!