pytest 怎么添加自琮久命令行参数?

 

这个函数一般在conftest.py中写。

这里面设置时很重要的一项是action

action=store : 表示亦是

action=append: 表示列表

 

def pytest_addoption(parser):
    parser.addoption(
        "--env",
        action="store",
        default='k8s',
        help="assign which env to use",
    )


@pytest.fixture(scope="session", autouse=True)
def init(request):
    print(request.config.option.env)  

 

另一个比较有用的是type, 当action是store时,type类型是python的基础类型,如果不指定的话,为str。 有哪些类型呢?int,str,float,list 等类型。但这个list貌似不太好用。不能指定为[1,2,3]这样子。中间不能有空格,最后代码中拿到,相当于list(input)。

def pytest_addoption(parser):
    parser.addoption("--cmdopt", action="store",
                     default=100,
                     type=int,
                     help="将命令行参数 ’--cmdopt' 添加到 pytest 配置中")

 

代码中获取自己添加的配置的方式:

可以通过fixture的request传入参数来获取到自己设置的参数。然后根据配置来进行一些操作。在上例中已经使用,request.config.option.env

还可以通过pytest_generate_tests方法中传入参数,来获取到相应的参数,并把参数用到用例中去。

#conftest.py
#获取方式二
def pytest_generate_tests(metafunc):
    if "stringinput" in metafunc.fixturenames:
        metafunc.parametrize("stringinput",metafunc.config.getoption("stringinput"))

 

 

 

如何传入参数:

一、命令行传入 pytest --env k8s test.py

二、通过pytest.ini传入: addopts = --env k8s

三、通过pycharm运行时的additional arugemnts传入

 

 

 

参数文档:

https://blog.csdn.net/waitan2018/article/details/104320927

https://docs.pytest.org/en/latest/customize.html#command-line-options-and-configuration-file-settings

https://docs.pytest.org/en/latest/writing_plugins.html#using-hooks-in-pytest-addoption

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐