Probar fallas en Python
pytest.raises afirma que la llamada falla, y también cómo.
import pytest
def estrellas(valor):
if not 0 <= valor <= 3:
raise ValueError(f"estrellas fuera de rango: {valor}")
return valor
def test_rechaza_demasiadas():
with pytest.raises(ValueError, match="fuera de rango"):
estrellas(9)
def test_reporta_el_valor_malo():
with pytest.raises(ValueError) as excinfo:
estrellas(-1)
assert "-1" in str(excinfo.value)
def test_acepta_el_rango():
assert [estrellas(n) for n in range(4)] == [0, 1, 2, 3]
Cómo funciona
- El bloque
withdebe contener la llamada que falla y nada más. matchrevisa el mensaje contra una expresión regular.excinfo.valuees la excepción misma, para más aserciones.
Palabras clave y builtins usados aquí
asassertdefforifraiserangereturnstrwith
El intento, en números
- Líneas
- 22
- Caracteres a escribir
- 444
- Tokens
- 114
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 68 segundos.
Paso 2 de 3 en Escribir pruebas; paso 2 de 9 en Testing con pytest.