我正在尝试开始使用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。
答案 0 :(得分:10)
setUpClass是2.7和3.2版本中unittest框架的新功能。如果你想在旧版本中使用它,你需要使用nose作为测试运行器而不是unittest。
答案 1 :(得分:5)
我猜你不是直接调用这个测试类,而是派生类。
如果是这种情况,您必须手动调用setUpClass()
- 它不会自动调用。
class TestB(TestRepGen):
@classmethod
def setUpClass(cls):
super(TestB, cls).setUpClass()
此外,还要the docs class-level fixtures are implemented by the test suite
。因此,如果您以某种奇怪的方式致电TestRepGen
或test_method
而未发布,setUpClass
可能无法投放。
答案 2 :(得分:1)
好的 - 现在是时候承认这是我的错误了。当我应该(并且认为我是)使用3.2.1时,我正在使用3.1.2。我现在已经改为正确的版本,一切都很好,测试正在通过。非常感谢所有回复的人(抱歉浪费你的时间:-()。