pytest如何切换多套测试环境

大部分公司都有多套测试环境,sit/uat...。自动化用例如何做到多套测试环境自由切换执行

方法1、注册命令行参数,通过命令行参数来指定测试环境

  pytest中有一个request的内置fixture,具有可选的param属性,为请求的对象提供请求上下文的访问权。在conftest.py文件中写一个hook函数,通过addoption来注册一个新的命令行参数host

addoption里面的参数。parser.addoption('命令行参数', default='默认执行环境', help='帮助信息')。action参数默认为'store'

import pytest


def pytest_addoption(parser):
    # 注册命令行参数
    parser.addoption(
        "--host", action='store', default='https://baidu.com/', help='环境切换 switch environment'
    )


@pytest.fixture(scope='function')
def host(request):
    # 通过request.config来获取host信息
    h = request.config.getoption('--host')
    return h

--测试:

  当在终端运行时指定了host的时候,用例里面会默认运行指定的host地址

pytest test_aa.py --host='https://cnblogs.com' -s

    当在终端运行没有指定host地址的时候,用例执行使用默认地址

  该方法的解决思路:在conftest里面注册新的命令行参数,再写一个fixture,通过request.config.getoption('获取新增的命令行参数'),再return。能实现有多套测试环境的时候,指定host地址即可切换。

方法2、通过安装pytest-base-url插件,使用pytest.ini配置文件来实现

pip install pytest-base-url

该插件实际就是一个内置的base_url fixture。通过新建pytest.ini文件,配置base_url即可实现环境切换

 --测试:

  方法2,只需要安装pytest-base-url插件,新建pytest.ini文件。在里面声明base_url地址,右击run即可

 当环境地址发生改变后,直接改pytest.ini的base_url地址即可

 

 

 

 

 

 

 

posted @ 2022-04-09 17:13  夏大帅  阅读(995)  评论(0编辑  收藏  举报