pytest添加自定义命令行参数
pytest 怎么添加自琮久命令行参数?这个函数一般在conftest.py中写。这里面设置时很重要的一项是actionaction=store : 表示亦是action=append: 表示列表def pytest_addoption(parser):parser.addoption("--env",action="store",default='k8s',help="assign whic..
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/writing_plugins.html#using-hooks-in-pytest-addoption
更多推荐
所有评论(0)