typestar

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

  1. Mock registra las llamadas que recibió.
  2. patch intercambia un nombre mientras dura el bloque.
  3. Haz aserciones sobre la llamada, no sobre las entrañas del mock.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Seleccionar y simular; paso 7 de 9 en Testing con pytest.

← Anterior Siguiente →