Pergunta de entrevista para Desenvolvedor Python

Como você testaria uma função que chama uma API de pagamento de terceiro?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Isole a fronteira. Ponha a chamada HTTP atrás de um cliente fino, e nos testes substitua por um fake ou aplique patch onde ele é usado, não onde é definido. Use fixtures do pytest para setup e parametrize para os casos de sucesso, falha e timeout. Adicione um conjunto pequeno de testes de contrato contra o sandbox real para os mocks não desviarem.

Por que os entrevistadores perguntam isso

Os entrevistadores usam isso para ver como você pensa fronteiras de teste e design. Quem dá patch em internals profundos está dizendo que o código dele não tem costuras. Eles também escutam fluência em pytest, ou seja, fixtures, parametrize e monkeypatch, e consciência de que mocks codificam premissas que apodrecem, então algo precisa verificar o contrato real de vez em quando.

Como estruturar sua resposta

  • Desenhe uma costura antes de discutir mocking.
  • Explique o patch no ponto de uso.
  • Cubra caminhos de falha com parametrize.
  • Proteja contra desvio de mock com testes de contrato.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Testabilidade é primeiro uma questão de design. Se a chamada de pagamento está enterrada dentro da lógica de negócio, eu puxo ela para uma classe cliente com alguns métodos, e aí a lógica recebe esse cliente como argumento. Nesse ponto a maioria dos testes não precisa de biblioteca de mock nenhuma, porque eu passo um fake pequeno que devolve respostas prontas, o que é mais fácil de ler do que uma pilha de decorators de patch. Onde eu dou patch, eu dou no nome dentro do módulo sob teste, não no módulo da biblioteca, porque dar patch onde ele é definido não faz nada depois que ele foi importado em outro lugar. As fixtures montam os objetos, e o parametrize cobre os casos interessantes: aprovado, recusado, timeout e um payload malformado, já que os ramos de falha são o que realmente quebra em produção. Também mantenho um punhado de testes contra o sandbox do provedor, marcados para rodar toda noite em vez de a cada commit. Isso pegou uma mudança em que o provedor começou a devolver um código de erro que nunca tínhamos mockado.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Como você evita testes que verificam internals do mock?
  • Quando um fake é melhor que um MagicMock?
  • Como você testaria comportamento de retry e backoff?

Mais perguntas para Desenvolvedor Python

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot