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