setup fail example conftest python py.test nose

python - example - pytest fail



nose vs pytest: ¿cuáles son las diferencias(subjetivas) que deberían hacerme elegir? (1)

Empecé a trabajar en un proyecto Python bastante grande (multiproceso), con muchas pruebas (de unidades). El problema más importante que existe es que ejecutar la aplicación requiere un entorno preestablecido, que es implementado por un administrador de contexto. Hasta ahora, hicimos uso de una versión parcheada del corredor de prueba de la unidad que ejecutaría las pruebas dentro de este administrador, pero eso no permite cambiar el contexto entre diferentes módulos de prueba.

Tanto el nose como el pytest son compatibles con tal cosa, ya que son compatibles con accesorios en muchas granularidades, por lo que estamos buscando cambiar a nose o pytest. Ambas bibliotecas también admitirían pruebas de "etiquetado" y ejecutarían solo estos subconjuntos etiquetados, que es algo que también nos gustaría hacer.

He estado revisando un poco la documentación de nose y pytest, y hasta donde puedo ver, la mayor parte de esas librerías soportan esencialmente la misma funcionalidad, excepto que puede tener un nombre diferente o requerir una sintaxis ligeramente diferente. Además, noté algunas pequeñas diferencias en los complementos disponibles (nose tiene multiprocesamiento-soporte, pytest no parece por ejemplo)

Por lo que parece, el diablo está en los detalles, lo que significa (a menudo al menos) en el gusto personal y es mejor que vayamos con la biblioteca que mejor se adapte a nuestro gusto personal.

Así que pedí una argumentación subjetiva sobre por qué debería ir con nose o pytest para elegir el combo de biblioteca / comunidad que mejor se adapta a nuestras necesidades.


Solía ​​usar Nose porque era el predeterminado con Pylons. No me gustó en absoluto. Tenía zarcillos de configuración en varios lugares, prácticamente todo parecía estar hecho con un complemento infradocumentado que lo hacía aún más indirecto y confuso, y dado que hacía las pruebas unitarias por defecto, regularmente se rompía con los seguimientos de Unicode, ocultando las fuentes de los errores.

He estado muy feliz con py.test los últimos dos años. Poder simplemente escribir una prueba con una assert me hace odiar escribir pruebas mucho menos, y hackear todo lo que necesito sobre el núcleo ha sido bastante fácil. En lugar de una interfaz de plugin fijo, solo tiene montones de ganchos y un código fuente bastante comprensible en caso de que necesite profundizar. Incluso escribí un adaptador para ejecutar Testify en py.test, y tuve más problemas con Testify que con py.test.

Dicho esto, he oído que nose tiene complementos para pruebas sin clases y asertan la introspección hoy en día, por lo que probablemente te irá bien con cualquiera. Sin embargo, todavía siento que puedo comenzar a trabajar con py.test, y puedo entender lo que sucede cuando se rompe.