【发布时间】:2011-08-11 04:19:04
【问题描述】:
我正在尝试开始使用 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()
显示assert错误信息,表示self.testvar == None,并没有被setUpClass()更改。我的代码有问题吗?
如果我从我的 IDE (Wing) 中或直接从命令行运行代码,我会得到相同的结果。作为记录,我在 Windows7 下使用 Python 3.2.1。
【问题讨论】:
-
我已经在 Windows 7 下的 Python 2.7 上尝试过你的代码。它工作正常;测试通过。如果您完全运行上面的脚本,它真的不适合您吗? Python 3.3 的文档没有表明
setUpClass的行为有任何变化。 -
您粘贴的代码适用于我在 windows 7 上的 python27 和 python 3.2.1 中。
-
您使用 setUpClass 有什么原因吗?为什么不直接使用
def setUp(self)? -
@Bogdan 正如他们的名字所暗示的那样,
setUp()和setUpClass()用于不同的目的。第一个为每个测试用例运行,而后者只为测试套件运行一次。 -
setUpClass() 是否总是需要使用@classmethod?
标签: python unit-testing python-3.x