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


163

Quiero empezar a escribir las pruebas unitarias para mi código Python, y los py.test sonidos marco como una mejor opción que Python de liado unittest . 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 "tests".

PyCharm supuestamente admite py.test en su corredor de prueba. Se supone que debe ser capaz de 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, se supone que debo ver un elemento de menú "Crear <nombre>", pero el único elemento de menú que comienza con "Crear" es "Crear configuración de ejecución". De acuerdo, tal vez la documentación sea incorrecta, y "Crear configuración de ejecución" suena prometedor. Desafortunadamente, los únicos dos elementos en su submenú son "Pruebas de unidad en C: \ mypath ..." y "Pruebas de documento en C: \ mypath ...", ninguno de los cuales se aplica; no estoy usando ni unittest ni doctest. No hay elemento de menú para py.test.

Si abro mi test_sample.py y hago clic con el botón derecho en la ventana del editor, obtengo los elementos prometidos del menú "Crear <nombre>": hay "Crear 'Pruebas unitarias en test_sa ...'...", seguido de "Ejecutar 'Unittests en test_sa ...' "y" Debug 'Unittests en test_sa ...' ". De nuevo, todo es específico del marco de prueba de unidad; 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 se supone que deben aparecer en la configuración del diálogo py.test . No hay nada dentro del diálogo para cambiar qué marco de prueba 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.testmis 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?

Respuestas:


228

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


Ja! No sé cómo me perdí eso. Sin embargo, solo funciona a medias: si hago clic derecho en la carpeta en la ventana de la herramienta Proyecto, me da la opción de crear doctests, no py.tests. (Escribiré un informe de error). Pero funciona si hago clic derecho en el editor y luego cambio "Script:" al nombre del directorio.
Joe White

3
También recuerde marcar su directorio fuente como "raíz de fuentes": jetbrains.com/pycharm/webhelp/content-root.html
Inti

1
¿Hay alguna manera de configurar esto para todo el proyecto (o todos los proyectos) en lugar de por módulo?
OrangeDog

1
Parece que File | Settings | Tools | Python Integrated Toolssolo está disponible en la Configuración del proyecto en lugar de la Configuración predeterminada en PyCharm 5.
killthrush

2
Una vez que está configurado, ¿cómo ejecuta realmente las pruebas?
Chris Anderson

51

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools- Elige py.testcomo Default test runner.
  2. Si usa Django Preference -> Languages&Frameworks -> Django: active esta casillaDo not use Django Test runner
  3. Borre todas las configuraciones de prueba existentes anteriormente Run/Debug configuration, de lo contrario, las pruebas se ejecutarán con esas 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

2
En PyCharm 2017.3.2, incluso después de configurar py.test como predeterminado, cuando hago clic derecho en el proyecto en el panel Proyectos y selecciono New => Python File, el Kind:menú desplegable solo ofrece: archivo Python, prueba unitaria, trozo de Python, no Pytest. He buscado en todas las ubicaciones mencionadas en los hilos anteriores. ¿Qué me estoy perdiendo?
Tom Baker

Archivo de Python, Prueba unitaria, código auxiliar de Python: son archivos de Python, con algunos datos predefinidos, puede agregar los suyos, lea este tema jetbrains.com/help/pycharm/… . Pero esto no afecta la ejecución de la prueba py.test, puede crear solo un archivo python y funcionará. En este tema, estamos discutiendo cómo configurar esta función jetbrains.com/help/pycharm/running-tests.html para ejecutar py.test.
Sergey Kubrak

En el último PyCharm, "Defaults" se llama "Plantillas"
AgDude

19

Creo que debe usar el elemento Ejecutar / Depurar configuración en la barra de herramientas. Haga clic en él y 'Editar configuraciones' (o utilice alternativamente 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 coincidía con la interfaz de usuario para esto. Espero haber entendido el problema correctamente y eso ayuda.


44
La página "Defaults> py.test" en realidad no me dio ninguna forma de crear una configuración. Pero si fui al cuadro de diálogo Editar configuraciones, hice clic en el botón de barra de herramientas "+", seleccioné "py.test" y configuré "Directorio de trabajo" en el directorio que contiene mis pruebas, eso creó una configuración que ejecutaría mis pruebas. Entonces +1 por señalarme una parte útil del programa. Sin embargo, le daré la respuesta aceptada a @yole, ya que creo que cambiar el valor predeterminado a py.test es una mejor solución: debería permitirme ejecutar solo el archivo actual y cosas así.
Joe White

@JoeWhite Por favor agrégalo como respuesta ya que fue útil
Hariom Singh

En la ventana Editar configuración, después de elegir mi configuración de pytest, también tuve que elegir Targetser Script athy señalarla a la raíz de mi carpeta de pruebas
RAbraham

Esta es una manera mucho mejor, ya que abre otras características, así como pasar argumentos de línea de comandos, etc.
chirag nayak

13

Así es como lo hice funcionar con pytest 3.7.2(instalado a través de pip) y pycharms 2017.3:

  1. Ir edit configurations

  1. Agregue una nueva configuración de ejecución y seleccione py.test

  1. En los detalles de configuración de ejecución, debe establecer target= pythony el campo sin nombre a continuación en tests. Parece que este es el nombre de su carpeta de prueba. No estoy muy seguro. También recomiendo el -sargumento para que si depura sus pruebas, la consola se comportará 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 foobar_test.pyarchivo: (no se necesitan importaciones):
def test_foobar ():
    print ("hola pytest")
    afirmar verdadero
  1. Ejecútelo con el comando de ejecución normal


¿Existe alguna posibilidad de ejecutar solo la prueba desde el archivo actual? Solo descubrí que necesito cambiar el nombre del archivo en la configuración cada vez que abro otro archivo
algot

@algot No sé eso en la parte superior de mi cabeza. Eche un vistazo a esto: jetbrains.com/help/pycharm/performing-tests.html y esto: jetbrains.com/pycharm/guide/tips/run-single-test
Benjamin Crouzier

5

Está mal documentado para estar seguro. Una vez que agregue una nueva configuración de los valores predeterminados, estará en el reino de ejecutar el 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. Intenta jugar, invertir el guión y ver si de alguna manera puedes 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 una discusión ya que JetBrains hace un buen trabajo al bombardear los algoritmos de Google con sus propias páginas.


3

encuentre este hilo cuando toco la misma pregunta y encontré la versión de la solución pycharm: 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


Funcionará, pero luego debe hacer clic derecho en el nombre del archivo de script de prueba en la ventana Proyecto. Si hace clic con el botón derecho en el área del editor de archivos de la misma secuencia de comandos de prueba, desafortunadamente todavía muestra la herramienta predeterminada anterior (Pruebas de unidad). Esto es molesto ya que no puedo especificar la función individual que quiero probar.
Hongyu Zhang el

3

En pycharm 2019.2, simplemente puede hacer esto para ejecutar todas las pruebas:

  1. Ejecutar> Editar configuraciones> Agregar pytest
  2. Establezca las opciones como se muestra en la siguiente captura de pantalla captura de pantalla de la configuración
  3. Haga clic en Depurar (o ejecute pytest usando, por ejemplo, teclas de acceso rápido Shift + Alt + F9)

Para una mayor integración de pytest en pycharm, consulte https://www.jetbrains.com/help/pycharm/pytest.html


2

Estoy usando 2018.2

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

Selecciono Target: nombre del módulo y pongo el módulo donde están mis pruebas (es decir, 'pruebas' para mí) o el módulo donde está todo mi código si mis pruebas se mezclan con mi código. Esto me estaba haciendo tropezar.

Configuré el intérprete de Python.

Configuré el directorio de trabajo en el directorio del proyecto.


0

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

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

2.Cree una 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!

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


0

Con 2018.3 parece detectar 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 pytestpara cada testsdirectorio 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.


0

Habilite Pytest para su proyecto

  1. Abra la Configuración / Preferencias | Herramientas | Diálogo de configuración de Herramientas integradas de Python como se describe en Elección del marco de prueba
  2. En el campo Corredor de prueba predeterminado, seleccione pytest .
  3. Haga clic en Aceptar para guardar la configuración.

ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.