Detener testinguite si un testcase encuentra un error

Tengo un testSuite en Python con varios testCases .

Si un testCase falla, testSuite continúa con el siguiente testCase . Me gustaría poder detener testSuite cuando un testCase falla o poder decidir si testSuite debe continuar o detenerse.

Desde Python 2.7, unittest soporta la opción failfast . Se puede especificar por línea de comandos:

 python -m unittest -f test_module 

O al usar un script:

 >>> from unittest import main >>> main(module='test_module', failfast=True) 

Desafortunadamente, todavía no he descubierto cómo especificar esta opción cuando está usando setuptools y setup.py .

¿Estás haciendo pruebas de unidad? ¿O pruebas de sistema de otra cosa? Si es lo último, puede que te interese mi marco de prueba basado en Python . Una de sus características es exactamente esta. Puede definir las dependencias de los casos de prueba y la suite omitirá las pruebas con las dependencias fallidas. También tiene soporte incorporado para selenium y webdriver. Sin embargo, no es tan fácil de configurar. Actualmente en desarrollo pero sobre todo funciona. Se ejecuta en Linux.

Ejecute sus pruebas con la nariz y use la bandera -x. Eso, combinado con la marca –failed, debería darle todo lo que necesita. Así que en el nivel superior de su proyecto ejecutado

 nosetests -x # with -v for verbose and -s to no capture stdout 

Alternativamente podrías correr con

 nosetests --failed 

Lo que volverá a ejecutar solo las pruebas fallidas de la suite de pruebas.

Otras banderas útiles:

 nosetests --pdb-failure --pdb 

te deja en un depurador en el momento en que tu prueba falló o se redujo

 nosetests --with-coverage --cover-package= --cover-html 

le da una página html coloreada que muestra qué líneas de su código han sido tocadas por la ejecución de prueba

Una combinación de todos esos por lo general me da lo que quiero.

Puede usar sys.exit () para cerrar el intérprete de python en cualquier punto dentro de su testcase.