如果测试已通过,则使用Uniitest.TestResult.wasSuccessful()到chqcke

时间:2016-11-02 08:57:35

标签: python python-unittest

在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

1 个答案:

答案 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>