使用python 2.6.6的unittest
模块,如何在所有测试运行后调用代码?
请考虑以下MCVE:
#!/bin/env python
import unittest
def setUpModule():
print 'setUpModule'
def tearDownModule():
print 'tearDownModule'
class TestClass(unittest.TestCase):
@classmethod
def setUpClass(cls):
print 'setUpClass'
@classmethod
def tearDownClass(cls):
print 'tearDownClass'
def test_trivia(self):
self.assertTrue(True)
def main():
"""entry point"""
unittest.main()
if __name__ == '__main__':
main()
我希望在控制台上看到tearDownClass
和tearDownModule
,但它不会:
$ ./test.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
$
我做错了什么?
答案 0 :(得分:2)
Python 2.6 unittest doc未提及setUpClass,tearDownClass,setUpModule和tearDownModule方法/函数。所以他们可能不受单元测试的支持而根本没有被调用。
然而,unittest2似乎从2.4开始支持Python。它可能会为您提供Python 2.6不支持的单元测试功能。
我认为你没有做错任何事情,并调用了setUp *和tearDown *函数/方法。我认为unittest只是隐藏了打印的字符串。
尝试为您调用unittest.main函数提供详细级别2,它应该解决“问题”:
unittest.main(verbosity=2)