在Python unittest框架中,我们希望在每个测试用例之后进行一些检查。如果它成功与否,如果它不成功,我们想做一些行动。
我正在尝试探索Uniitest.TestResult.wasSuccessful(),但即使测试已经过去,它也会返回'True'。这是示例和输出。由于我的test_addNumbers已经过fialed,它应该返回False
import unittest
class SampleClass(unittest.TestCase):
result = unittest.TestResult()
def setUp(self):
print 'setup'
def tearDown(self):
print self.result.wasSuccessful()
print 'tearDown'
def test_addNumbers(self):
a = 10
b = 20
c = a + b
print c
self.assertEqual('fo'.upper(), 'FOO')
def test_addNumbers_new(self):
p = 20
q = 20
r = p + q
print r
return r
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(SampleClass)
unittest.TextTestRunner(verbosity=1).run(suite)
输出:
导入unittest 建立 30
失败 预期:'FO' 实际:'FOO'
追踪(最近一次通话): 在test_addNumbers中输入文件“C:\ Users \ a4tech \ Documents \ WorkSpace \ Vanilla_Python.git \ Kiran_Test \ SampleUnitTest.py”,第19行 self.assertEqual('fo'.upper(),'FOO') AssertionError:'FO'!='FOO'
真
TEARDOWN
设置
40
真
TEARDOWN
答案 0 :(得分:1)
TestRunner.run()方法返回TestResult实例 这个目的
(见https://docs.python.org/2/library/unittest.html#unittest.TestResult)。
因此,您应该将代码中的最后一行更改为
test_result = unittest.TextTestRunner(verbosity=1).run(suite)
然后评估test_result
。它的价值是
<unittest.runner.TextTestResult run=2 errors=0 failures=1>