Pytest自动化测试使用pytest.ini实现环境变量控制

测试框架中往往要实现环境切换和环境变量的选择,一般的实现方案

  • 使用pytest-base-url,切换base_url配置
  • 使用pytest-variables,配合不同的test.json/beta.json/prod.json文件来实现
    使用的问题
  1. 是json编辑容易出错
  2. 需要建立额外的多个数据文件

这里考虑借用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)

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值