unittest.mock en Python
Reemplazar un colaborador para que la prueba nunca toque la red.
from unittest.mock import Mock, patch
def enviar(cliente, carga):
respuesta = cliente.post("/api/results", json=carga)
return respuesta.status_code == 200
def test_envia_la_carga():
cliente = Mock()
cliente.post.return_value = Mock(status_code=200)
assert enviar(cliente, {"tpm": 104}) is True
cliente.post.assert_called_once_with("/api/results", json={"tpm": 104})
def test_parchea_un_nombre():
with patch("time.time", return_value=1234.0) as reloj:
import time
assert time.time() == 1234.0
assert reloj.called
Cómo funciona
Mockregistra las llamadas que recibió.patchintercambia un nombre mientras dura el bloque.- Haz aserciones sobre la llamada, no sobre las entrañas del mock.
Palabras clave y builtins usados aquí
asassertdefreturnwith
El intento, en números
- Líneas
- 21
- Caracteres a escribir
- 518
- Tokens
- 126
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 69 segundos.
Paso 2 de 3 en Seleccionar y simular; paso 7 de 9 en Testing con pytest.