Unittest setUpClass不工作

Ala*_*eid 7 python unit-testing python-3.x

我正在尝试开始使用unittest,但我在开始setUpClass()工作时遇到了问题.这是我的测试代码......

import unittest

class TestRepGen(unittest.TestCase):
    """ Contains methods for training data testing """

    testvar = None

    @classmethod
    def setUpClass(cls):
        cls.testvar = 6

    def test_method(self):
        """ Ensure data is selected """
        self.assertIsNotNone(self.testvar,"self.testvar is None!")

# run tests
if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

将显示断言错误消息,指示self.testvar == None并且尚未更改setUpClass().我的代码有问题吗?

如果我从IDE(Wing)中运行代码,或者直接从命令行运行代码,我会得到相同的结果.为了记录,我在Windows7下使用Python 3.2.1.

Zan*_*son 10

setUpClass是2.7和3.2版本的unittest框架的新功能.如果您想使用旧版本,则需要使用nose作为测试运行器而不是unittest.


agf*_*agf 5

我猜你不是直接调用这个测试类,而是派生类.

如果是这种情况,您必须setUpClass()手动调用- 它不会自动调用.

class TestB(TestRepGen):
    @classmethod
    def setUpClass(cls):
        super(TestB, cls).setUpClass()
Run Code Online (Sandbox Code Playgroud)

另外,根据文档 class-level fixtures are implemented by the test suite.所以,如果你正在打电话TestRepGen或者test_method一些你没有发帖的奇怪方式,setUpClass可能就不会运行了.


Ala*_*eid 2

好吧 - 是时候举手承认这是我的错误了。当我应该(并且认为我是)使用 3.2.1 时,我却使用了 3.1.2。我现在已经更改为正确的版本,一切都很好,测试也通过了。非常感谢所有回复的人(很抱歉浪费了您的时间:-( )。