当前位置: 代码迷 >> 综合 >> pytest(10): 自定义命令行参数,获取传参
  详细解决方案

pytest(10): 自定义命令行参数,获取传参

热度:58   发布时间:2023-11-21 17:37:27.0

Hook 方法之 pytest_addoption :
pytest_addoption 可以让用户注册一个自定义的命令行参数,方便用户将数据传递给 pytest;

 

这个 Hook 方法一般和 内置 fixture pytestconfig 配合使用,pytest_addoption 注册命令行参数,pytestconfig 通过配置对象读取参数的值;
 

 pytest_addoption 注册、pytestconfig 获取命令行参数 :

# conftest.pyimport pytest# 注册自定义参数 cmdopt 到配置对象
def pytest_addoption(parser):parser.addoption("--cmdopt", action="store",default="None",help="将自定义命令行参数 ’--cmdopt' 添加到 pytest 配置中")# 从配置对象获取 cmdopt 的值
@pytest.fixture(scope='session')
def cmdopt(pytestconfig):return pytestconfig.getoption('--cmdopt')# 然后任何 fixture 或测试用例都可以调用 cmdopt 来获得设备信息

parser.addoption() 参数说明:

name:自定义命令行参数的名字,可以是:"foo", "-foo" 或 "--foo";
action:在命令行中遇到此参数时要采取的基本操作类型;
nargs:应该使用的命令行参数的数量;
const:某些操作和nargs选择所需的常量值;
default:如果参数不在命令行中,则生成的默认值。
type:命令行参数应该转换为的类型;
choices:参数允许值的容器;
required:命令行选项是否可以省略(仅可选);
help:对参数作用的简要说明;
metavar:用法消息中参数的名称;
dest:要添加到 parse_args() 返回的对象中的属性的名称;

例:

#conftest.py

#conftest.pyimport pytest# 注册自定义参数 cmdopt 到配置对象
def pytest_addoption(parser):parser.addoption("--cmdopt", action="store",default="None",help="将自定义命令行参数 ’--cmdopt' 添加到 pytest 配置中")# 从配置对象获取 cmdopt 的值
@pytest.fixture(scope='session')
def cmdopt(pytestconfig):input_arg = pytestconfig.getoption('--cmdopt')ht = pytestconfig.getoption('--html')print('input_arg',input_arg)print('ht', ht)return 1234567

# test_demo.py

# test_demo.py@pytest.mark.parametrize('p1,p2,p3', datas)
def test_01(fixture_f, cmdopt,p1, p2, p3):print(p1, p2, p3)

获取到了自定义命令参数  和 自带的html参数