场景
1.一般公司测试环境都有多套,测试的时候我们需要在不同的环境下进行
2.在自动化执行时,在不同的环境下我们要指定不同的系统配置,每次修改框架代码配置这个很不自动化
3.pytest_addoption注册参数 这个就很好的解决了这个问题,它能在执行命令的时候传递参数
基本用法
#conftest.py
# 注册自定义参数num到配置对象
def pytest_addoption(parser):
parser.addoption(
"--num_1", action="store", default=‘0‘, help="my option: 说明"
)
parser.addoption(
"--num_2", action="store", default=‘0‘, help="my option: 说明"
)
# 从配置对象获取值
@pytest.fixture(scope=‘session‘, autouse=True)
def num_1(request):
return request.config.getoption("--num_1")
@pytest.fixture(scope=‘session‘, autouse=True)
def num_2(request):
return request.config.getoption("--num_2")
#test_02.py
def test_run(num_1, num_2):
print(num_1)
print(num_2)
#不带参数运行
test_02.py::test_run PASSED num_1: 0
num_2: 0
=== 1 passed in 0.05s
#带参数运行:pytest -s -v test_02.py --num_1=11 --num_2=22
test_02.py::test_run
num_1: 11
num_2: 22
PASSED
=== 1 passed in 0.06s
参数含义
name:自定义命令行参数的名字,可以是:"foo", "-foo" 或 "--foo";
action:在命令行中遇到此参数时要采取的基本操作类型;
nargs:应该使用的命令行参数的数量;
const:某些操作和nargs选择所需的常量值;
default:如果参数不在命令行中,则生成的默认值。
type:命令行参数应该转换为的类型;
choices:参数允许值的容器;
help:对参数作用的简要说明;
原文:https://www.cnblogs.com/Bruin/p/15266678.html