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:
- 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
- Al hacer clic con el botón derecho en la sección doctest, aparece la opción "Ejecutar ''Doctests in temp''"
- Haga clic derecho en la sección principal para la opción "Ejecutar ''temp''"
- 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 esaConfiguration
. - 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.