Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python unittest-setUpClass()给我带来了麻烦-为什么';我不是这样继承的吗?_Python_Unit Testing - Fatal编程技术网

Python unittest-setUpClass()给我带来了麻烦-为什么';我不是这样继承的吗?

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

我有如下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, 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()