Python unittest-setUpClass()给我带来了麻烦-为什么';我不是这样继承的吗?
我有如下unittest代码:Python unittest-setUpClass()给我带来了麻烦-为什么';我不是这样继承的吗?,python,unit-testing,Python,Unit Testing,我有如下unittest代码: import unittest class MyUnitTest(unittest.TestCase): def setUpClass(self): do_something_expensive_for_all_sets_of_tests() class MyFirstSetOfTests(MyUnitTest): def setUpClass(self): super(MyFirstSetOfTests, se
import unittest
class MyUnitTest(unittest.TestCase):
def setUpClass(self):
do_something_expensive_for_all_sets_of_tests()
class MyFirstSetOfTests(MyUnitTest):
def setUpClass(self):
super(MyFirstSetOfTests, self).setUpClass()
do_something_expensive_for_just_these_first_tests()
def test_one(self):
...
def test_two(self):
...
class MySecondSetOfTests(MyUnitTest):
def setUpClass(self):
super(MySecondSetOfTests, self).setUpClass()
do_something_expensive_for_just_these_second_tests()
def test_one(self):
...
def test_two(self):
...
if __name__ == '__main__':
unittest.main()
当我尝试运行此代码时,会出现如下错误:
======================================================================
ERROR: setUpClass (__main__.MyFirstSetOfTests)
----------------------------------------------------------------------
TypeError: unbound method setUpClass() must be called with MyFirstSetOfTests instance as first argument (got nothing instead)
----------------------------------------------------------------------
setUpClass
必须是类方法。从:
在单个类运行中进行测试之前调用的类方法setUpClass
以类作为唯一参数调用,并且必须修饰为classmethod()
:
有关更多详细信息,请参阅
您的版本缺少以下内容:
引发错误的原因是对类而不是实例调用了MyFirstSetOfTests.setUpClass()
,但您没有将方法标记为classmethod
,因此它没有在自动self
参数中传递。在上面更新的代码中,我使用了cls
,以反映名称引用了类对象
@classmethod
def setUpClass(cls):
...
class MyUnitTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
do_something_expensive_for_all_sets_of_tests()
class MyFirstSetOfTests(MyUnitTest):
@classmethod
def setUpClass(cls):
super(MyFirstSetOfTests, cls).setUpClass()
do_something_expensive_for_just_these_first_tests()