# @python3
# @Time : 2023/4/21 9:05
# @Author : Jike_Ma
# @FileName: conftest.py
import pytest
hosts = {
"dev": "http://dev.com.cn",
"prod": "http://prod.com.cn",
"test": "http://test.com.cn"
}
# 注册一个自定义参数,并为其命名为 --host ,添加到pytest配置对象
def pytest_addoption(parser):
parser.addoption("--host",
action="store", # 默认只存储参数的值【命令行参数添加到pytest配置对象中的参数的参数值】
default="test",
choices=["test", "dev", "prod"], # 可以为该参数值指定几个值
help="将命令行参数 ‘--host’ 添加到pytest配置对象中"
)
parser.addoption("--zone",
action="append", # 将参数值存储为一个列表,用 append 模式将可以在pytest命令行方式执行测试用例的同时多次向程序内部传递自定义参数对应的参数值;
default=[], # defalut默认值必须是一个列表类型,pytest会将default 默认参数值和多个自定义参数值放在一个列表中
type=int, # 注册的自定义到pytest配置对象中的命令行参数对应的参数值应该转换的数据类型。默认str型
help="将命令行参数 ‘--zone’ 添加到pytest配置对象中"
)
# pytest配置对象中读取自定义参数--host 的值
@pytest.fixture(scope="session")
def get_cmdopt(request):
return hosts.get(request.config.getoption("--host"))
# 从配置对象中读取自定义参数的值
@pytest.fixture(scope="session")
def get_zone(request):
return request.config.getoption("--zone")
# @python3
# @Time : 2023/4/21 9:18
# @Author : Jike_Ma
# @FileName: test_cmdopt.py
import pytest
def test_get_cmdopt(get_cmdopt, get_zone):
env, zone = get_cmdopt, get_zone
print(env, zone)
print(type(env))
print(type(zone[0]))
if __name__ == '__main__':
pytest.main(['-s', '--host=prod', "--zone=8"])
具体文档:https://www.cnblogs.com/hls-code/p/15046457.html