【发布时间】:2015-05-21 16:50:08
【问题描述】:
如何根据测试结果在 Python unittest.TestCase 派生类中每次测试后调用函数?
例如,假设我们有以下测试类:
import sys
from unittest import TestCase
class TestFeedback(TestCase):
def msg(self, text):
sys.stdout.write(text + ' ...')
def on_fail(self):
sys.stdout.write(' FAILED!\n')
def on_success(self):
sys.stdout.write(' SUCCEEDED!\n')
def test_something(self):
self.msg('Testing whether True == 1')
self.assertTrue(True == 1)
def test_another(self):
self.msg('Testing whether None == 0')
self.assertEqual(None, 0)
我希望在每次测试后根据测试结果调用 on_success() 或 on_fail() 方法,例如
>>> unittest.main()
...
Testing whether True == 1 ... SUCCEEDED!
Testing whether None == 0 ... FAILED!
<etc.>
这可以做到吗?如果可以,怎么做?
【问题讨论】:
-
与您的要求相关,您可以向每个
assert方法传递一个附加参数,如果测试失败将显示该参数。一般来说,您可能希望查看使用unittest.result.TestResult的自定义子类 -
下面的答案解决了你的问题吗?
标签: python unit-testing python-unittest