python py.test

python - Pytest: deseleccionar pruebas



py.test (3)

Además, con la reciente adición de la opción de línea de comando "-m" debería poder escribir:

py.test -m "not (slow or long)"

IOW, la opción "-m" acepta una expresión que puede usar marcadores como valores booleanos (si un marcador no existe en una función de prueba, su valor es False, si existe, es Verdadero).

Con Pytest, uno puede marcar pruebas usando un decorador

@pytest.mark.slow def some_slow_test(): pass

Luego, desde la línea de comando, uno puede decirle a pytest que se salte las pruebas marcadas como "lento"

pytest -k-slow

Si tengo una etiqueta adicional:

@pytest.mark.long def some_long_test() pass

Me gustaría poder omitir pruebas largas y lentas. He intentado esto:

pytest -k-slow -k-long

y esto:

pytest -k-slow,long

Y ninguno parece funcionar.

En la línea de comandos, ¿cómo le digo a pytest que omita tanto las pruebas lentas como las largas?


Mirando a través del código pytest ( mark.py ) y una mayor experimentación muestra que lo siguiente parece funcionar:

pytest -k "-slow -long"

(El uso de la opción --collect-only acelera la experimentación)


También es posible apilar los decoradores de marcas.

@pytest.mark.slow @pytest.mark.main def test_myfunction(): pass

Luego llamé a py.test -m "slow and main" y solo se llamaron las pruebas con ambos decoradores.

py.test -m "not (slow and main)" resultó en las otras pruebas ejecutándose