pytest - 自定义参数

快速入们

conftest.py: 文件名字固定写法,自定义命令行参数信息

import pytest

hosts = {
    "dev": "http://dev.xxxx.com",
    "test": "http://test.xxxx.com",
    "uat": "http://uat.xxxx.com",
    "prod": "http://prod.xxxx.com",
}


# 自定义参数
def pytest_addoption(parser):
    parser.addoption("--host",  # 名称,在命令行中接收该选项后面的值
                     action="store",  # 对命令行中后面的值进行存储操作
                     dest="host_value",  # 存储值的名称,可以省略,直接pytestconfig.getoption("--host")
                     default="test",  # --host 的默认值
                     choices=["dev", "test", "uat", "prod"],  # --host的可选值
                     help="""
                        dev:表示开发环境,
                        test:表示测试环境
                        uat:表示功能测试环境
                        prod:表示生产环境
                        default:测试环境
                     """)


@pytest.fixture(scope="session")
def get_cmdopts(pytestconfig):  # 方法名字可以随便写,但是需要与测试用例使用的地方保持一致
    if hosts.get(pytestconfig.getoption("host_value")):
        return hosts.get(pytestconfig.getoption("host_value"))

# # fixture 写法二:
# @pytest.fixture(scope="session")
# def get_cmdopts(request):  # request 参数名字固定写法
#     if hosts.get(request.config.getoption("--host")):
#         return hosts.get(request.config.getoption("--host"))

test_addoption.py: 测试用例文件,使用命令行中自定义的参数

import pytest

def test_option(get_cmdopts):  # get_cmdopts: 名字要与conftest.py中用fixture标记的方法保持一致
    print(get_cmdopts)

命令行指定参数值:

--host 的默认值:

如果运行非指定参数会出错:

pytest -h 可以查看自定义参数信息

总结:

  • pytest_addoption 自定义注册参数
  • 被pytest.fixture()修饰的方法: 获得命令行的自定义参数信息,并返回

参考:

https://blog.csdn.net/u010454117/article/details/119120349?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-4-119120349-blog-117929050.pc_relevant_default&spm=1001.2101.3001.4242.3&utm_relevant_index=7

posted @ 2022-05-15 15:20  chuangzhou  阅读(364)  评论(0编辑  收藏  举报