Estoy aprendiendo Python y he estado tratando de entender más sobre los detalles del módulo unittest
de Python. La documentación incluye los siguientes:Con Python unittest, ¿cómo creo y uso un "objeto invocable que devuelve un conjunto de pruebas"?
Para la facilidad de las pruebas de funcionamiento, ya que veremos más adelante, es una buena idea para proporcionan en cada módulo de prueba de un objeto invocable que devuelve una prueba de pre-construidos suite:
def suite(): suite = unittest.TestSuite() suite.addTest(WidgetTestCase('testDefaultSize')) suite.addTest(WidgetTestCase('testResize')) return suite
Por lo que yo puedo decir, no se explica el propósito de hacer esto. Además, no pude averiguar cómo se usaría dicho método. He intentado varias cosas sin éxito (aparte de aprender acerca de los mensajes de error que tengo):
import unittest
def average(values):
return sum(values)/len(values)
class MyTestCase(unittest.TestCase):
def testFoo(self):
self.assertEqual(average([10,100]),55)
def testBar(self):
self.assertEqual(average([11]),11)
def testBaz(self):
self.assertEqual(average([20,20]),20)
def suite():
suite = unittest.TestSuite()
suite.addTest(MyTestCase('testFoo'))
suite.addTest(MyTestCase('testBar'))
suite.addTest(MyTestCase('testBaz'))
return suite
if __name__ == '__main__':
# s = MyTestCase.suite()
# TypeError: unbound method suite() must be called
# with MyTestCase instance as first argument
# s = MyTestCase.suite(MyTestCase())
# ValueError: no such test method in <class '__main__.MyTestCase'>: runTest
# s = MyTestCase.suite(MyTestCase('testFoo'))
# TypeError: suite() takes no arguments (1 given)
El siguiente "trabajaron", pero parece torpe y se requiere que cambie el método de firma de suite()
a 'def suite(self):
'.
s = MyTestCase('testFoo').suite()
unittest.TextTestRunner().run(s)