【Pytest自定义参数】HOOK函数-自动化框架实现多环境运行

在平时的接口自动化运行当中会遇到多套环境的兼容,就可以通过Pytest,HOOK函数,通过自定义命令行参数的方法来实现隔离多套环境用例的运行

首先需要导入pytest模块,并在主项目路径下创建conftest.py文件

import pytest
#添加自定义命令行参数,例如:添加环境变量参数env-test,pro,release
def pytest_addoption(parser):
    mygroup = parser.getgroup("demaxiya")
    mygroup.addoption("--env",
                      dest='env',
                      action='store',
                      choices=['test', 'pro', 'release'],
                      default='test',  # 默认值
                      help='将自己定义的命令行参数添加到pytest配置中
#读取自定义环境参数--env
@pytest.fixture(scope="session")
def env(request):
    # 读取环境变量配置
    maven = request.config.getoption('--env')
    #这里请看上节Pytest添加自定义环境变量方法
    add_envoriment('env', maven)
    print("添加env成功")
    if maven == 'test':
        datapath = DATASPATH + f'{maven}.yaml'
    elif maven == 'pro':
        datapath = DATASPATH + f'{maven}.yaml'
    elif maven == 'release':
        datapath = DATASPATH + f'{maven}.yaml'
    else:
        return f"环境变量--env={maven}取值错误"
    with open(datapath, encoding='utf-8') as f:
        datas = yaml.safe_load(f)[f'{maven}']
    return [maven, datas]
    #通过这样的命令之后当前处于什么环境  就可以通过read_envoriment("env")知道了,从而做判断
    例如在编写接口自动化:
    if read_envoriment("env") == "test":
       '''这里就是test环境下的逻辑处理了'''
#这里首先需要创建主函数:main.py 在命令行参数中  添加 --env=test即可就说明运行的是test环境的逻辑
pytest.main(['-s', '-v', 
             '--env=test', #设置自定义Pytest参数变量
             '--reruns=1', '--reruns-delay=2', # 对失败用例重跑一次,重跑前间隔2s
              '--alluredir', f'{BASE_PATH}/report/xml/' + new_dir_name])  # 生成xml
    command_word = f'allure generate {BASE_PATH}/report/xml/{new_dir_name} -o {BASE_PATH}/report/html/{new_dir_name} --clean'
    os.system(command_word)  # 执行cmd命令,生成html
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勒布朗-孟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值