Conjunto de testes automatizados em Python para validar um fluxo com Tavern e um cenário assíncrono de performance com FastAPI e HTTPX.
O enunciado está em assets/Exercício ATS10.pdf.
Lembrando..
python -m venv .venvNo Linux/macOS:
source .venv/bin/activateNo Windows:
.venv\Scripts\activatepython -m pip install -r requirements.txtAs dependências do projeto são:
fastapihttpxtavernpytestpytest-asyncio
Na raiz do projeto, com o ambiente ativo:
python -m pytestEsse comando executa toda a suíte, incluindo o fluxo do Tavern e o teste assíncrono da API local.
Se quiser rodar apenas o fluxo do Tavern:
python -m pytest test_fluxo_todos.tavern.yamlSe quiser rodar apenas o teste de performance:
python -m pytest test_perfomance.pyO arquivo test_fluxo_todos.tavern.yaml valida a API pública JSONPlaceholder em duas etapas:
- Busca os To-Dos com os IDs
1,5e15. - Confere se cada resposta volta com status HTTP
200. - Salva o
userIdretornado na primeira consulta. - Usa esse
userIdpara consultar todas as tarefas do mesmo usuário. - Delega a validação da estrutura para
utils.validar_lista_tarefas, que confirma se o retorno é uma lista e se existe ao menos uma tarefa com a chavecompleted.
O arquivo test_perfomance.py valida o endpoint /processar da aplicação FastAPI definida em api_pagamentos.py.
O teste dispara simultaneamente 5, 20 e 50 requisições com asyncio.gather e httpx.ASGITransport. A aplicação roda em memória, então não é necessário subir servidor externo para a validação.
Para cada quantidade de requisições, o teste exige duas coisas:
- Todas as respostas precisam retornar status HTTP
200. - O tempo total precisa ficar abaixo de
3,5segundos.
O fluxo do Tavern deve concluir sem falhas de validação e o teste de performance deve mostrar que a chamada concorrente ao endpoint continua dentro do limite definido.
Na execução completa, o projeto verifica tanto integração com um serviço externo quanto comportamento local da API simulada, sem depender de Uvicorn.
TESTE-API
├── api_pagamentos.py
├── test_fluxo_todos.tavern.yaml
├── test_perfomance.py
├── utils.py
├── requirements.txt
└── assets/
└── Exercício ATS10.pdf
- O acesso à internet é necessário para o teste que consulta a JSONPlaceholder.
- O teste de performance usa a aplicação em memória, então ele roda sem subir servidor adicional.
- O arquivo
test_perfomance.pymantém o nome original do repositório.
Ryan Rodrigues Cordeiro