Flashcard FC213979
Qual é a finalidade de usar um mock em testes unitários para dependências externas?
Testes de Software
CESGRANRIO · 2024
Qual é a finalidade de usar um mock em testes unitários para dependências externas?
Mostrar resposta e comentário
Resposta
Substituir a dependência externa por um mock que fornece respostas controladas e permite simular sucessos, falhas e verificar chamadas.Explicação:
Um mock isola a unidade testada, garantindo determinismo (mesmos inputs → mesmos resultados), velocidade (sem chamadas de rede) e confiabilidade (sem depender da disponibilidade de terceiros).
Com mocks é possível configurar respostas previsíveis, simular erros ou timeouts e registrar/verificar parâmetros e número de invocações, facilitando testar cenários raros ou de falha.
exemplo:
# payments.py
import requests
def charge_card(token, amount):
resp = requests.post("https://pagamentos.example/charge",
json={"token": token, "amount": amount},
timeout=5)
if resp.status_code == 200 and resp.json().get("status") == "approved":
return True
return False
# test_payments.py (usando pytest e unittest.mock)
from unittest.mock import patch, Mock
from payments import charge_card
def test_charge_card_approved():
mock_resp = Mock()
mock_resp.status_code = 200
mock_resp.json.return_value = {"status": "approved"}
with patch("payments.requests.post", return_value=mock_resp) as mock_post:
result = charge_card("tok_abc", 1000)
assert result is True
mock_post.assert_called_once()
args, kwargs = mock_post.call_args
# verifica URL e payload básico
assert "pagamentos.example/charge" in args[0]
assert kwargs["json"] == {"token": "tok_abc", "amount": 1000}
Nesse teste o mock substitui a chamada HTTP externa, permite forçar uma resposta de aprovação e verificar que a função enviou o payload correto, sem realizar rede real.
Veja como foi cobrado:
https://flashcardsconcursos.com.br/portal/flashcard/213573
Conteúdo do catálogo FC Concursos · Atualizado em