2010-09-22 11 views
5

Estoy haciendo unittests con python. No estoy usando ningún descubrimiento de prueba automática. Estoy ensamblando TestCases en un TestSuite manualmente.Python unittest - invocar unittest.main() con un TestSuite personalizado

puedo realizar estas pruebas con unittest.TextTestRunner().run(suite), me gustaría correr con unittest.main() para que pueda utilizar las opciones de línea de comandos (como -v/--failfast). La documentación dice que unittest.main() puede tomar una opción TestRunner.

Cómo convertir mi TestSuite en un TestRunner?

+1

TestSuite y TestRunner tienen ** nada ** que ver el uno con el otro. Un conjunto es una colección de pruebas. Un corredor ejecuta una colección de pruebas. No conviertes uno en el otro. Usted proporciona la suite al corredor (a través de 'unittest.main()', por lo general.) –

+0

¿Cómo proporciono una suite de pruebas a unittest.main()? ¿O cómo hago un TestRunner que ejecutará un TestSuite determinado (que puedo pasar a unittest.main()) – Rory

+1

¿Estás tratando de pasar 'failfast' a tu TestRunner? Si lee la fuente, una característica no documentada de testrunner es que acepta el parámetro 'failfast'. –

Respuesta

-2

No haga nada, excepto asegúrese de tener esto en su módulo de prueba de la unidad.

if __name__ == '__main__': 
    unittest.main(failfast=True) 

http://docs.python.org/library/unittest.html#unittest.main

De la documentación ...

unittest.main(failfast=True, testRunner=unittest.TextTestRunner) 
+0

No estoy usando autodescubrimiento de prueba de unittest.main(), estoy creando a mano una TestSuite. Si uso unittest.main como sugiere, no ejecutará mis pruebas. He intentado. – Rory

+0

¿Por qué la mano-cráter? ¿Por qué Main no detectará automáticamente sus pruebas? ¿Cuáles son tus superclases de prueba? ¿Cuáles son tus nombres de prueba? Funciona perfectamente para mí. ¿Que estas haciendo mal? –

+0

No uso autodetección porque estoy haciendo TestCases en base a entradas válidas conocidas para una función. Estoy usando este enfoque http://stackoverflow.com/questions/2798956/python-unittest-generate-multiple-tests-programmatically/3772008#3772008 – Rory

2

Cerca duplicado de How to run a testsuite with unittest.main (respuesta de copiar y pegar-):

no se puede pasar de una a TestSuite main, mira el constructor de unittest.main.TestProgram (que es unittest.main) y cómo funciona esta clase. El primer argumento, si hay algo, es el nombre del módulo, no un conjunto de pruebas.

main() en realidad toma sus argumentos de sys.argv, ya que en realidad está destinado a ser utilizado desde la línea de comandos y no desde un programa. Es común hacerlo por conveniencia.

Cuestiones relacionadas