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.
我猜你不是直接调用这个测试类,而是派生类.
如果是这种情况,您必须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可能就不会运行了.
好吧 - 是时候举手承认这是我的错误了。当我应该(并且认为我是)使用 3.2.1 时,我却使用了 3.1.2。我现在已经更改为正确的版本,一切都很好,测试也通过了。非常感谢所有回复的人(很抱歉浪费了您的时间:-( )。