¿Cómo configuro PyCharm para ejecutar pruebas de py.test?

Quiero comenzar a escribir pruebas unitarias para mi código de Python, y el framework py.test suena como una mejor apuesta que el test de unidad de Python. Así que agregué un directorio de “pruebas” a mi proyecto y le agregué test_sample.py . Ahora quiero configurar PyCharm para ejecutar todas las pruebas en mi directorio de “pruebas”.

PyCharm supuestamente apoya py.test en su corredor de prueba. Se supone que debe poder crear una configuración de ejecución / depuración para ejecutar sus pruebas, y PyCharm supuestamente tiene un cuadro de diálogo “crear configuración” específicamente para py.test . Pero esa es la extensión completa de su documentación sobre el tema, y ​​no puedo encontrar este supuesto cuadro de diálogo en ninguna parte.

Si hago clic con el botón derecho en el directorio en la ventana de la herramienta Proyecto, debo ver un elemento del menú “Crear “, pero el único elemento del menú que comienza con “Crear” es “Crear configuración de ejecución”. Bueno, tal vez la documentación sea incorrecta, y “Crear configuración de ejecución” puede parecer prometedor. Desafortunadamente, los únicos dos elementos en su submenú son “Unittests in C: \ mypath …” y “Doctests in C: \ mypath …”, ninguno de los cuales se aplica, no uso unittest ni doctest. No hay un elemento de menú para py.test.

Si abro mi test_sample.py y hago clic derecho en la ventana del editor, obtengo los elementos del menú “Crear ” prometidos: hay “Crear ‘Unittests in test_sa …’…”, seguido de “Ejecutar ‘Unittests in test_sa …’ “y” Debug ‘Unittests in test_sa …’ “. Así que de nuevo, todo es específico para el marco unittest; nada para py.test.

Si pruebo los elementos del menú que dicen “unittest”, aparece un cuadro de diálogo con opciones para “Nombre”, “Tipo”, un cuadro de grupo “Pruebas” con “Carpeta” y “Patrón” y “Script” y “Clase “y” Función “, etc. Esto suena exactamente como lo que está documentado como el cuadro de diálogo para agregar una configuración para Python Unit Test , y no como las opciones” Nombre “y” Prueba para ejecutar “y” Palabras clave “que deben aparecer en la configuración para el diálogo py.test . No hay nada dentro del diálogo para cambiar el marco de prueba que estoy agregando.

Estoy usando PyCharm 1.5.2 en Windows con Python 3.1.3 y pytest 2.0.3. Puedo ejecutar con éxito py.test en mis pruebas desde la línea de comandos, por lo que no es algo simple como que pytest no se instale correctamente.

¿Cómo configuro PyCharm para ejecutar mis pruebas py.test?

Por favor, vaya a Archivo | Configuraciones | Herramientas | Python Integrated Tools y cambie el corredor de prueba predeterminado a py.test. Luego obtendrás la opción py.test para crear pruebas en lugar de la prueba de unidad.

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools – Elija py.test como el Default test runner .
  2. Si usa Django Preference -> Languages&Frameworks -> Django – Active la checkbox Do not use Django Test runner
  3. Borre todas las configuraciones de prueba previamente existentes de la configuración Run/Debug configuration , de lo contrario, las pruebas se ejecutarán con las configuraciones anteriores.
  4. Para establecer algunos argumentos adicionales predeterminados, actualice la configuración predeterminada de py.test. Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments

Creo que necesitas usar el elemento Ejecutar / Depurar configuración en la barra de herramientas. Haga clic en él y en ‘Editar configuraciones’ (o use el elemento de menú Ejecutar-> Editar configuraciones). En la sección ‘Valores predeterminados’ en el panel izquierdo hay un elemento ‘py.test’ que creo que es lo que quieres.

También encontré que el manual no coincide con la interfaz de usuario para esto. Espero que haya entendido el problema correctamente y eso ayuda.

Está mal documentado para estar seguro. Una vez que agregue una nueva configuración de los valores predeterminados, estará en el ámbito de la ejecución del script “/ Applications / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py”. No está documentado y tiene sus propias ideas de argumentos de línea de comando.

Usted puede:

  1. Intente jugar, invierta el guión y vea si de alguna manera puede obtener py.test para aceptar argumentos. Podría funcionar; no lo hizo en la primera media hora para mí.
  2. Simplemente ejecute “py.test * .py” desde una consola.

Curiosamente, le resultará difícil encontrar alguna discusión, ya que JetBrains hace un buen trabajo bombardeando los algoritmos de Google con sus propias páginas.

Aquí es cómo lo hice funcionar con pytest 3.7.2 (instalado a través de pip) y pycharms 2017.3 :

  1. Ir a edit configurations

  1. Agrega una nueva configuración de ejecución y selecciona py.test

  1. En los detalles de configuración de ejecución, debe establecer target = python y el campo sin nombre a continuación para las tests . Parece que este es el nombre de su carpeta de prueba. No estoy muy seguro. También recomiendo el argumento -s para que si depuras tus pruebas, la consola se comporte correctamente. Sin el argumento pytest captura la salida y hace que la consola de depuración tenga errores.

  1. Mi carpeta de pruebas se ve así. Esto está justo debajo de la raíz de mi proyecto ( my_project/tests ).

  1. Mi archivo foobar_test.py : (no se necesitan importaciones):
 def test_foobar ():
     imprimir ("hola pytest")
     afirmar verdadero
  1. Ejecutarlo con el comando de ejecución normal

encuentre este hilo cuando haga clic en la misma pregunta y encuentre la solución pycharm versión: 2017.1.2 vaya a “Preferencias” -> “Herramientas” -> “Herramientas integradas de Python” y configure el corredor de prueba predeterminado desde el panel lateral derecho como py.test resuelve mi problema

Estoy usando 2018.2

Ejecuto -> Editar configuraciones … Luego haga clic en + en la esquina superior izquierda del diálogo modal. Seleccione “pruebas de python” -> py.test Luego le pongo un nombre como “Todas las pruebas con py.test”

Selecciono Destino: nombre del módulo y coloco el módulo donde están mis pruebas (es decir, “pruebas” para mí) o el módulo donde se encuentra todo mi código si mis pruebas están mezcladas con mi código. Esto me estaba haciendo tropezar.

Puse el intérprete de Python.

Puse el directorio de trabajo en el directorio del proyecto.

Con una configuración especial de Conda python que incluía la instalación de pip para py.test más el uso del complemento Specs (opción –spec) (para Rspec como el lenguaje de resumen de pruebas), tuve que hacerlo;

1.Edite el py.test predeterminado para incluir la opción = –spec, lo que significa que use el complemento: https://github.com/pchomik/pytest-spec

2.Crear nueva configuración de prueba, usando py.test. Cambie su intérprete de python para usar ~ / anaconda / envs / su elección de intérpretes, por ejemplo, py27 para mis nombres.

3.Elimine la configuración de prueba ‘unittests’.

4. Ahora la configuración de prueba predeterminada es py.test con mis encantadoras salidas de estilo Rspec. ¡Me encanta! ¡Gracias a todos!

La documentación de ps Jetbrains en ejecución / depuración está aquí: https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test

Con 2018.3 parece que se detecta automáticamente que estoy usando pytest, lo cual es bueno, pero aún no permite ejecutar desde el nivel superior del proyecto. Tuve que ejecutar pytest para cada directorio de tests individualmente.

Sin embargo, descubrí que podía elegir una de las configuraciones y editarla manualmente para ejecutarla en la raíz del proyecto y que esto funcionó. Tengo que elegirlo manualmente en el menú desplegable Configuraciones; no puedo hacer clic derecho en la carpeta raíz en el panel Proyecto. Pero al menos me permite ejecutar todas las pruebas a la vez.