Python单元测试:setUpClass()、tearDownClass()、setUpModule() 和 tearDownModule() 未被调用
Python unittest: setUpClass(), tearDownClass(), setUpModule() and tearDownModule() are not called
使用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
$
我做错了什么?
Python2.6 的答案:
Python 2.6 unittest doc没有提到setUpClass、tearDownClass、setUpModule和tearDownModulemethods/functions。所以它们可能不被 unittest 支持并且根本没有被调用。
不过,unittest2似乎从2.4开始支持Python。它可能会为您带来 unittest for Python 2.6 不支持的功能。
Python2.7 或更高版本的答案:
我认为您没有做错什么,调用了 setUp* 和 tearDown* functions/methods。我认为 unittest 只是隐藏了打印的字符串。
尝试为您对 unittest.main 函数的调用提供 2 级详细信息,它应该修复 "problem":
unittest.main(verbosity=2)
使用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
$
我做错了什么?
Python2.6 的答案:
Python 2.6 unittest doc没有提到setUpClass、tearDownClass、setUpModule和tearDownModulemethods/functions。所以它们可能不被 unittest 支持并且根本没有被调用。
不过,unittest2似乎从2.4开始支持Python。它可能会为您带来 unittest for Python 2.6 不支持的功能。
Python2.7 或更高版本的答案:
我认为您没有做错什么,调用了 setUp* 和 tearDown* functions/methods。我认为 unittest 只是隐藏了打印的字符串。
尝试为您对 unittest.main 函数的调用提供 2 级详细信息,它应该修复 "problem":
unittest.main(verbosity=2)