parametrize en Python
Un solo cuerpo de prueba, una fila de casos y un resultado aparte por cada uno.
import pytest
def wpm(letras, segundos):
return (letras / 5) / (segundos / 60)
@pytest.mark.parametrize("letras,segundos,esperado", [
(400, 60, 80.0),
(200, 60, 40.0),
(400, 30, 160.0),
])
def test_wpm(letras, segundos, esperado):
assert wpm(letras, segundos) == pytest.approx(esperado)
@pytest.mark.parametrize("letras", [0, 100])
@pytest.mark.parametrize("segundos", [30, 60])
def test_nunca_negativo(letras, segundos):
assert wpm(letras, segundos) >= 0
Cómo funciona
- Los ids del reporte salen de los parámetros.
- Varios parámetros se multiplican en una cuadrícula.
- Reemplaza el bucle dentro de una prueba, que esconde fallas.
Palabras clave y builtins usados aquí
assertdefreturn
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 461
- Tokens
- 133
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 80 segundos.
Paso 3 de 3 en Escribir pruebas; paso 3 de 9 en Testing con pytest.