Python单元测试在failu之后继续

2024-10-01 15:46:25 发布

您现在位置:Python中文网/ 问答频道 /正文

unittest中失败后继续测试的最佳方法是什么?在

#!/usr/env/bin python2.7

import unittest
from fib import fib


class FibTests(unittest.TestCase):

    def test_0(self):
        self.assertEqual(fib(0), 0)
        self.assertEqual(fib(1), 1)
        self.assertEqual(fib(2), 1)
        self.assertEqual(fib(5), 5)
        self.assertEqual(fib(10), 55)

    def test_1(self):
        self.assertEqual(fib(0), 1)

    def test_2(self):
        self.assertEqual(fib(1), 0)
        self.assertEqual(fib(5), 0)

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(FibTests)
    result = unittest.TextTestRunner(verbosity=2).run(suite)

看看测试2,它只会告诉我有1个失败,而不是2个。在

此外,我如何在最后收集结果,说明:

^{pr2}$

动机

我正在尝试创建一个测试游戏。人们提交测试,如果他们没有通过其他人的程序,他们会得到分数;每个测试失败都是一分。提供这种能力最简单的方法是什么?在


Tags: 方法fromtestimportselfenvbinusr
1条回答
网友
1楼 · 发布于 2024-10-01 15:46:25

你必须把每个测试用例分成不同的方法。为了更容易地创建新的测试/节省键入时间,您可以根据如下输入自动生成测试用例

#!/usr/env/bin python2.7

import unittest
from fib import fib


class FibTests(unittest.TestCase):
    pass

def test_gen(expected, actual):
    def test_method(self):
        return self.assertEqual(expected, actual)
    return test_method

if __name__ == '__main__':
    cases = ((fib(1), 1), (fib(2), 1), (fib(5), 5))
    for index, case in enumerate(cases):
        test_name = 'test_{0}'.format(index)
        test = test_gen(case[1], case[0])
        setattr(FibTests, test_name, test)
    suite = unittest.TestLoader().loadTestsFromTestCase(FibTests)
    result = unittest.TextTestRunner(verbosity=2).run(suite)

相关问题 更多 >

    热门问题