Python unittest如何收集测试结果

我在使用Python的unittest,需求是我想把每次测试的结果保存起来,在需要的时候就拿出来展示。比如说,我这次执行了5个测试函数,结果可能是三个通过,两个未通过,未通过的原因是什么。。请问有什么方法能把这些信息提取出来?不是以字符串的形式,而是以字典或者Python对象的形式提取出来。

阅读 10.8k
1 个回答

使用unittest模块本身的方法即可:

import unittest


class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'F0O')
        self.assertEqual('foo'.upper(), 'F0O')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)


def main():
    suite = unittest.TestLoader().loadTestsFromTestCase(TestStringMethods)
    test_result = unittest.TextTestRunner(verbosity=2).run(suite)
    print('All case number')
    print(test_result.testsRun)
    print('Failed case number')
    print(len(test_result.failures))
    print('Failed case and reason')
    print(test_result.failures)
    for case, reason in test_result.failures:
        print case.id()
        print reason


if __name__ == '__main__':
    main()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题