unit test run only one new intellij hacer generate crear como automatically unit-testing debugging pycharm

unit testing - test - La línea de comando de depuración interactiva de la prueba de la unidad Pycharm no funciona



new junit test intellij (3)

Esto es probable porque su corredor de prueba está capturando stdout pero no stderr.

Utilizo py.test que captura tanto stdout como stderr, por lo que no veo salida. Si quiero ver el resultado, tengo que pasar el indicador -s a mi corredor py.test que se puede hacer modificando la configuración de ejecución / depuración y agregando este indicador al campo de opciones. (Ejecutar> Editar configuraciones> Predeterminados> Pruebas de Python> py.test> agrega -s al campo "argumentos adicionales").

>>> print ''a'' a >>> import sys >>> sys.stderr.write(''moof'') moof >>> sys.stdout.write(''moof'') moof >>> sys.stderr.write(''test'') test

Nota: la bandera -s se puede usar igualmente con pruebas de nariz

Al depurar las pruebas unitarias (a través del corredor de prueba de pycharm), se puede activar la línea de comandos interactiva, pero (a diferencia de cuando se depuran scripts regulares) los comandos ingresados ​​no producen ningún resultado. Como cuestión de hecho, parece que stdout se está capturando en alguna parte, porque stderr funciona como se esperaba:

>>> print "a" >>> import sys >>> sys.stderr.write("moof") moof >>> sys.stdout.write("moof") >>> sys.stderr.write("test") test

¿Es este comportamiento esperado? Realmente me gusta la consola de depuración interactiva y sería increíble si se comportara bien al depurar pruebas de unidades también.


Para unittest, puede agregar ''--capture = no'' a Pycharm Run / Debug configuration - esto mostrará todos los resultados en tiempo real


Si no desea cambiar la configuración de ejecución / depuración cada vez que ejecuta pruebas, puede establecer la variable de entorno JB_DISABLE_BUFFERING como "-s". Es útil si usa el atajo ^ + SHIFT + D para depurar las pruebas del archivo actual en el editor.