繁体   English   中英

单元测试 setUpClass 不起作用

[英]Unittest setUpClass not working

我正在尝试开始使用 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()

显示断言错误消息,表明self.testvar == None ,并且没有被setUpClass()更改。 我的代码有问题吗?

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

从 2.7 和 3.2 开始,setUpClass 是 unittest 框架的新功能。 如果您想将它与旧版本一起使用,您将需要使用鼻子作为测试运行程序而不是 unittest。

我猜你不会直接调用这个测试 class,而是一个派生的 class。

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

class TestB(TestRepGen):
    @classmethod
    def setUpClass(cls):
        super(TestB, cls).setUpClass()

此外,测试套件实现了对文档class-level fixtures are implemented by the test suite编码。 因此,如果您以某种未发布的奇怪方式调用TestRepGentest_methodsetUpClass可能无法运行。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM