Python 2.7 向pytest设置函数添加参数
我正在努力学习pytest,但我遇到了一个障碍。我需要在setup_方法中定义一个通过命令行参数定义的变量。我可以在单独的测试中做到这一点,没有问题,但是在setup方法中尝试做同样的事情失败了。我收到这个信息-Python 2.7 向pytest设置函数添加参数,python-2.7,pytest,Python 2.7,Pytest,我正在努力学习pytest,但我遇到了一个障碍。我需要在setup_方法中定义一个通过命令行参数定义的变量。我可以在单独的测试中做到这一点,没有问题,但是在setup方法中尝试做同样的事情失败了。我收到这个信息- TypeError: setup_method() takes exactly 3 arguments (2 given) 我做错什么了吗?任何帮助都将不胜感激 这是我的conftest.py # Conftest.py import pytest def pytest_addop
TypeError: setup_method() takes exactly 3 arguments (2 given)
我做错什么了吗?任何帮助都将不胜感激
这是我的conftest.py
# Conftest.py
import pytest
def pytest_addoption(parser):
parser.addoption("--var_one", action="store", default=False)
parser.addoption("--var_two", action="store", default=False)
@pytest.fixture
def var_one(request):
var_one_param = request.config.getoption("--var_one")
return var_one
@pytest.fixture
def var_two(request):
var_two_param = request.config.getoption("--var_two")
return var_two_param
实际运行测试时,我这样做-
py.test --var_one=True --var_two==True tests.py
这是一个文件,我希望在执行文件时定义并调用变量-
import pytest
class Tests:
def setup_method(self, method, var_one):
if var_one == True:
# do stuff
else:
# do other stuff
def test_one(self, var_two):
assert var_two == True
def teardown_method(self):
#Not needed here
pass
.setup\u method()
和.teardown\u method()
函数是机头兼容性选项,它们不接受夹具作为参数。最好在类上使用自动使用装置:
class Tests:
@pytest.fixture(autouse=True)
def do_stuff_based_on_var_one(self, var_one):
if var_one:
# do stuff
else:
# do other stuff
def test_one(self, var_two):
assert var_two is True
作为旁注,请注意,将布尔值与=
进行比较被认为是不好的做法,在某些情况下,只需使用它的隐含真值。如果您确实需要比较它,请确认它是单例的,并将对象标识与is
一起使用