Pytest - 如何将参数传递给 setup_class?
Pytest - How to pass an argument to setup_class?
我有一些代码如下所示。
我在 运行 时遇到 too few args
错误。
我没有明确地调用 setup_class
,所以不确定如何将任何参数传递给它。
我尝试用 @classmethod
修饰方法,但仍然看到相同的错误。
我看到的错误是 - E TypeError: setup_class() takes exactly 2 arguments (1 given)
有一点需要注意 - 如果我没有将任何参数传递给 class,并且只传递 cls
,那么我没有看到错误。
非常感谢任何帮助。
在发帖之前,我确实查看了这些问题 question #1 and question #2。我不明白发布到这些问题的解决方案,或者它们是如何工作的。
class A_Helper:
def __init__(self, fixture):
print "In class A_Helper"
def some_method_in_a_helper(self):
print "foo"
class Test_class:
def setup_class(cls, fixture):
print "!!! In setup class !!!"
cls.a_helper = A_Helper(fixture)
def test_some_method(self):
self.a_helper.some_method_in_a_helper()
assert 0 == 0
因为你在 pytest 中使用它,它只会调用 setup_class
一个参数和一个参数,看起来你不能在不改变 pytest calls this 的方式的情况下改变它。
您应该按照 documentation 并按照指定定义 setup_class
函数,然后在该方法中使用您在该函数中需要的自定义参数设置您的 class,看起来像
class Test_class:
@classmethod
def setup_class(cls):
print "!!! In setup class !!!"
arg = '' # your parameter here
cls.a_helper = A_Helper(arg)
def test_some_method(self):
self.a_helper.some_method_in_a_helper()
assert 0 == 0
您收到此错误是因为您试图混合 py.test 支持的两种独立测试样式:classical 单元测试和 pytest 的固定装置。
我的建议是不要混合它们,而是简单地定义一个 class 作用域固定装置,如下所示:
import pytest
class A_Helper:
def __init__(self, fixture):
print "In class A_Helper"
def some_method_in_a_helper(self):
print "foo"
@pytest.fixture(scope='class')
def a_helper(fixture):
return A_Helper(fixture)
class Test_class:
def test_some_method(self, a_helper):
a_helper.some_method_in_a_helper()
assert 0 == 0
我有一些代码如下所示。
我在 运行 时遇到 too few args
错误。
我没有明确地调用 setup_class
,所以不确定如何将任何参数传递给它。
我尝试用 @classmethod
修饰方法,但仍然看到相同的错误。
我看到的错误是 - E TypeError: setup_class() takes exactly 2 arguments (1 given)
有一点需要注意 - 如果我没有将任何参数传递给 class,并且只传递 cls
,那么我没有看到错误。
非常感谢任何帮助。
在发帖之前,我确实查看了这些问题 question #1 and question #2。我不明白发布到这些问题的解决方案,或者它们是如何工作的。
class A_Helper:
def __init__(self, fixture):
print "In class A_Helper"
def some_method_in_a_helper(self):
print "foo"
class Test_class:
def setup_class(cls, fixture):
print "!!! In setup class !!!"
cls.a_helper = A_Helper(fixture)
def test_some_method(self):
self.a_helper.some_method_in_a_helper()
assert 0 == 0
因为你在 pytest 中使用它,它只会调用 setup_class
一个参数和一个参数,看起来你不能在不改变 pytest calls this 的方式的情况下改变它。
您应该按照 documentation 并按照指定定义 setup_class
函数,然后在该方法中使用您在该函数中需要的自定义参数设置您的 class,看起来像
class Test_class:
@classmethod
def setup_class(cls):
print "!!! In setup class !!!"
arg = '' # your parameter here
cls.a_helper = A_Helper(arg)
def test_some_method(self):
self.a_helper.some_method_in_a_helper()
assert 0 == 0
您收到此错误是因为您试图混合 py.test 支持的两种独立测试样式:classical 单元测试和 pytest 的固定装置。
我的建议是不要混合它们,而是简单地定义一个 class 作用域固定装置,如下所示:
import pytest
class A_Helper:
def __init__(self, fixture):
print "In class A_Helper"
def some_method_in_a_helper(self):
print "foo"
@pytest.fixture(scope='class')
def a_helper(fixture):
return A_Helper(fixture)
class Test_class:
def test_some_method(self, a_helper):
a_helper.some_method_in_a_helper()
assert 0 == 0