Repaso
English
TestingBaseTST-05

¿Cómo compruebas en pytest que un código lanza ValueError?

Opciones

  1. assert raises(ValueError) después de la llamada
  2. with pytest.raises(ValueError): parse('x') (Opción correcta)
  3. try/except seguido de assert True
  4. @pytest.mark.error encima del test

Respuesta

with pytest.raises(ValueError): parse("x")

Por qué

El test pasa solo si el código dentro del bloque with lanza ValueError; si no hay error, el test falla.

También puedes comprobar el mensaje: pytest.raises(ValueError, match="invalid").

Un try/except escrito a mano que no hace nada si no hay error pasaría en silencio y ocultaría bugs.

Recuerda

Esperar un error → with pytest.raises(...).

Términos clave

Practica esta pregunta en Repaso