使用 Uniitest.TestResult.wasSuccessful() 检查测试是否通过

using Uniitest.TestResult.wasSuccessful() to chqcke if test has passed or not

在Python单元测试框架中,我们想在每个测试用例之后做一些检查。成功与否,不成功我们想做点什么

我正在尝试探索 Unittest.TestResult.wasSuccessful(),但 returns 'True' 即使测试已经通过。这是示例和输出。由于我的 test_addNumbers 失败了,它应该 return 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)

输出:

import unittest setup 30

Failure Expected :'FO' Actual :'FOO'

Traceback (most recent call last): File "C:\Users\a4tech\Documents\WorkSpace\Vanilla_Python.git\Kiran_Test\SampleUnitTest.py", line 19, in test_addNumbers self.assertEqual('fo'.upper(), 'FOO') AssertionError: 'FO' != 'FOO'

True

tearDown

setup

40

True

tearDown

A TestResult instance is returned by the TestRunner.run() method for this purpose

(在 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>