Tengo un directorio que contiene mis pruebas unitarias de Python. Cada módulo de prueba unitaria tiene la forma test _ *. Py . Estoy intentando crear un archivo llamado all_test.py que, lo adivinaste , ejecutará todos los archivos en el formulario de prueba mencionado anteriormente y devolverá el resultado. He probado dos métodos hasta ahora; Ambos han fallado. Mostraré los dos métodos, y espero que alguien sepa cómo hacerlo correctamente.
Para mi primer intento valiente, pensé "Si solo importo todos mis módulos de prueba en el archivo y luego llamo a este unittest.main()
doodad, funcionará, ¿verdad?" Bueno, resulta que estaba equivocado.
import glob
import unittest
testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]
if __name__ == "__main__":
unittest.main()
Esto no funcionó, el resultado que obtuve fue:
$ python all_test.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Sin embargo, para mi segundo intento, bueno, tal vez intentaré hacer todo este proceso de prueba de una manera más "manual". Así que intenté hacer eso a continuación:
import glob
import unittest
testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]
[__import__(str) for str in module_strings]
suites = [unittest.TestLoader().loadTestsFromName(str) for str in module_strings]
[testSuite.addTest(suite) for suite in suites]
print testSuite
result = unittest.TestResult()
testSuite.run(result)
print result
#Ok, at this point I have a result
#How do I display it as the normal unit test command line output?
if __name__ == "__main__":
unittest.main()
Esto tampoco funcionó, ¡pero parece tan cerca!
$ python all_test.py
<unittest.TestSuite tests=[<unittest.TestSuite tests=[<unittest.TestSuite tests=[<test_main.TestMain testMethod=test_respondes_to_get>]>]>]>
<unittest.TestResult run=1 errors=0 failures=0>
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Parece que tengo una suite de algún tipo, y puedo ejecutar el resultado. Estoy un poco preocupado por el hecho de que dice que solo tengo run=1
, parece que debería ser run=2
, pero es un progreso. Pero, ¿cómo paso y visualizo el resultado a main? ¿O cómo básicamente lo hago funcionar para poder ejecutar este archivo y, al hacerlo, ejecutar todas las pruebas unitarias en este directorio?