Cómo probar un solo archivo en pytest


81

¿Cómo se prueba un solo archivo en pytest? Solo pude encontrar opciones de ignorar y ninguna opción de "probar solo este archivo" en los documentos.

Preferiblemente, esto funcionaría en la línea de comando en lugar de setup.cfg, ya que me gustaría ejecutar diferentes pruebas de archivos en el ide. Toda la suite tarda demasiado.

Respuestas:


88

simplemente ejecute pytestcon la ruta al archivo

algo como

pytest tests/unit/some_test_file.py


3
Ok, esto parece ser lo que está haciendo Pycharm, pero todavía está ejecutando toda la suite. Ejecutar py.test en la línea de comandos está dando segfaults por alguna razón. Supongo que esto está fuera del alcance de la pregunta original, así que aceptaré su respuesta si puedo hacer que funcione.
Simonzack

3
Aparentemente, addoptssetup.cfg está dando problemas si la ruta se agrega allí.
Simonzack

1
@simonzack Supongo que desea ejecutar un solo caso de prueba de varios casos de prueba presentes en el archivo. Pruebe esto: py.test test_basic.py -k test_first aquí test_first es un caso de prueba presente en mi archivo test_basic.py.
Anurag Sinha

67

Esto es bastante simple:

$ pytest -v /path/to/test_file.py

La -vbandera es aumentar la verbosidad. Si desea ejecutar una prueba específica dentro de ese archivo:

$ pytest -v /path/to/test_file.py::test_name

Si desea ejecutar una prueba de qué nombres siguen un patrón, puede usar:

$ pytest -v -k "pattern_one or pattern_two" /path/to/test_file.py

También tiene la opción de calificar pruebas, por lo que puede usar la marca -mpara ejecutar un subconjunto de pruebas marcadas.

test_file.py

def test_number_one():
    """Docstring"""
    assert 1 == 1


@pytest.mark.run_these_please
def test_number_two():
    """Docstring"""
    assert [1] == [1]

Para ejecutar la prueba marcada con run_these_please:

$ pytest -v -m run_these_please /path/to/test_file.py

2
para path/to/test.py::test_method, tengo un error> ERROR: no encontrado: /home/namgivu/NN/code/myproject/tests/models/test_bill.py::test_generate_for_today_normal_cycle (sin nombre '/ home / namgivu / NN / code / myproject / tests / models /test_bill.py::test_generate_for_today_normal_cycle 'en cualquiera de [<Module' tests / models / test_bill.py '>])
Nam G VU

1
¿Qué pasa con las pruebas parametrizadas, con ID? -k my_test[a test id here]no funciona y lo mejor que he logrado hasta ahora es -k "my_test and a and test and id and here"que no es un formato amigable.
Paul D Smith

1
Los ejemplos dados en este ejemplo (en particular, la ruta de mezcla única y la sintaxis de selección de nodo) deben agregarse a la documentación de pytest, ya que en realidad no es tan obvio como en mi opinión.
cjauvin

11

Esto funcionó para mí:

python -m pytest -k some_test_file.py

Esto también funciona para funciones de prueba individuales:

python -m pytest -k test_about_something

esto pytest directory_to_tests/some_test_file.pyno funciona para mí. Estoy en Windows Python 3.8.2 y Pytest 6.0.1
minghua
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.