unittest unit run examples español assert_equal python unit-testing python-3.x exit-code

run - unittest python 3



La secuencia de comandos de prueba unitaria devuelve el código de salida=0 incluso si las pruebas fallan (2)

Mi script de prueba se ve de la siguiente manera:

import os import sys from unittest import defaultTestLoader as loader, TextTestRunner path_to_my_project = os.path.dirname(os.path.abspath(__file__)) + ''/../'' sys.path.insert(0, path_to_my_project) suite = loader.discover(''my_project'') runner = TextTestRunner() runner.run(suite)

Si ejecuto este script, el resultado es:

$ python3 runtest.py .....F..... ====================================================================== FAIL: test_insert (fate.test.test_operators.OperatorTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/chiel/Projects/tfate/libs/fate/../fate/test/test_operators.py", line 16, in test_insert self.assertEqual(expected, self.session.text[:14]) AssertionError: ''Foo import sys$'' != ''Foo import sys'' - Foo import sys$ ? - + Foo import sys ---------------------------------------------------------------------- Ran 12 tests in 0.030s FAILED (failures=1)

Y salir del código cero:

$ echo $? 0

Sin embargo, los documentos de python indican que "Por defecto, las llamadas principales sys.exit() con un código de salida que indica el éxito o el fracaso de las pruebas se ejecutan".

¿Qué pasa con mi script?



Tuve algunos problemas para obtener los resultados de TextTestRunner . Para aquellos como yo, así es como funciona:

"""Run all tests inside of *_test.py modules located in the same directory.""" import sys import unittest if __name__ == ''__main__'': test_suite = unittest.defaultTestLoader.discover(''.'', ''*_test.py'') test_runner = unittest.TextTestRunner(resultclass=unittest.TextTestResult) result = test_runner.run(test_suite) sys.exit(not result.wasSuccessful())