typestar

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

  1. El bloque with debe contener la llamada que falla y nada más.
  2. match revisa el mensaje contra una expresión regular.
  3. excinfo.value es la excepción misma, para más aserciones.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Escribir pruebas; paso 2 de 9 en Testing con pytest.

← Anterior Siguiente →