unittest unit test example assert_equal python intellij-idea pycharm doctest

python - unit - ¿Cómo ejecuto doctests con PyCharm?



unit test en python (2)

Si no desea eliminar configuraciones, también puede presionar la tecla de acceso directo para Ejecutar | Reanude el programa (F9 para mí) para que aparezca una lista completa de opciones

En el IDE de PyCharm, si hago clic con el botón derecho en una función / método con un doctest, a veces el menú del botón derecho me da la opción: " Ejecutar ''Doctest my_function_name'' " y, a veces, el menú del botón derecho, en cambio, solo da la opción de ejecutar el archivo completo (NO como un doctest).

¿Qué determina cuándo dará la opción "ejecutar doctest" y cuándo no? ¿Hay una manera de forzarlo de una manera u otra?


La ejecución de un módulo (o las pruebas en él) en PyCharm se realiza a través de una configuración de ejecución . Cuando hace clic con el botón derecho en un módulo, PyCharm busca una Run Configuration existente para ese módulo. Si se encuentra una configuración (esto puede ser debido a una ejecución previa o la creación manual de una Configuration ), PyCharm solo sugerirá ejecutar esa configuración.

Por ejemplo, si se creó una configuración de module.py para ejecutar sus doctests , esa es la opción que veremos al hacer clic con el botón derecho en module.py . Sin embargo, si no se encuentra ninguna configuración, PyCharm sugiere ejecutar el módulo en diferentes opciones, dependiendo del código en el módulo (ejecute regularmente, o ejecute doctests / unittests ). Una vez que se elige una opción, PyCharm crea la Run Configuration respectiva, temporal, Run Configuration , implícitamente. De aquí en adelante, cuando haga clic derecho en el módulo, solo obtendrá la configuración que se creó para ese módulo.

Nota importante: PyCharm guarda hasta 6 temporalmente (es decir, las Configurations que se crearon mediante la ejecución de un módulo) Run Configurations : 3 en "Python", es decir, scripts, y 3 en "Python Tests". Esto significa que si ejecuta moduleA.py , moduleB.py , moduleC.py y luego moduleD.py , las Configurations temporales en PyCharm serán moduleB.py , moduleC.py y moduleD.py . La configuración de moduleA.py se eliminará automáticamente, a menos que se guarde explícitamente.

Este comportamiento se puede reproducir de la siguiente manera:

  1. En PyCharm , crea un nuevo módulo de Python: "temp"

2.Agregue lo siguiente al módulo:

""" >>> print 3.14 3.14 """ if __name__ == ''__main__'': pass

  1. Al hacer clic con el botón derecho en la sección doctest, aparece la opción "Ejecutar ''Doctests in temp''"
  2. Haga clic derecho en la sección principal para la opción "Ejecutar ''temp''"
  3. Elegir cualquiera de las opciones, hace que la otra opción desaparezca en las siguientes ejecuciones. Por ejemplo, elegir ejecutar el módulo hará que la opción para ejecutar Doctests desaparezca en ejecuciones posteriores y viceversa. Volviendo a la primera etapa, donde fue posible elegir entre las dos opciones, es posible eliminando la "Configuración de ejecución" del módulo:

Ejecutar -> Editar configuración -> Localice la configuración actual del módulo (generalmente resaltada) -> Haga clic en el botón "Menos" (esquina superior izquierda) -> Haga clic en "Aplicar" -> Haga clic en Aceptar. Ahora estamos de vuelta en el paso 3.

(Reproducido en PyCharm 5.0 y 4.5)

Para resumir:

  • Si no se encuentra ninguna Run Configuration , PyCharm sugiere ejecutar el módulo de cualquier forma posible (como un script, doctests o unittests)
  • Si se encuentra una Run Configuration , PyCharm solo sugiere esa Configuration .
  • Si PyCharm no le brinda la opción de ejecución que desea, busque la Run Configuration que le impide darle esa opción y elimínela , o cree una nueva que ejecute el archivo, o método / función, de la forma en que querer.