Python Unittests continúa después del error

¿Cuál es la mejor manera de continuar las pruebas después de fallar en 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) 

Viendo test_2, solo me dirá que hay 1 falla en lugar de 2.

Además, ¿cómo puedo recostackr los resultados al final indicando:

 test_0 -- 0 failures test_1 -- 1 failures test_2 -- 2 failures 

Motivación :

Estoy tratando de crear un juego de prueba. Las personas envían pruebas y si fallan en los progtwigs de otros, obtienen puntos; Cada falla de prueba es un punto. ¿Cuál es la forma más fácil de proporcionar este tipo de capacidad?

Tienes que separar cada caso de prueba en un método diferente. Para facilitar la creación de un nuevo tiempo de escritura de prueba / guardar, puede generar automáticamente un caso de prueba basado en una entrada como esta

 #!/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)