//SOLVEME_

Ferramentas para developers / Testing · 2022

pycamel

Uma framework baseada em pytest para testes automatizados de API

Publicado: · Atualizado:

PythonpytestAPI Testing
Função
Desenvolvimento a solo da framework de automação de testes
Stack
Python, pytest, Pylint, Coverage, codecov
Ano
2022

O pycamel é uma framework de automação focada em cobrir serviços de API com testes, integrando-se sem atritos com o pytest. Dá às equipas uma forma estruturada de escrever testes de API, especialmente útil em arquiteturas de microsserviços.

O desafio

Quando uma equipa trabalha com vários serviços e versões de API ao mesmo tempo, scripts de pytest dispersos e ad hoc tornam-se rapidamente um caos, sem estrutura comum nem componentes reutilizáveis.

A solução

  • ▸CamelConfig — configuração com um URL base do serviço
  • ▸RouterMaker — construção de rotas para diferentes endpoints de API
  • ▸Testes parametrizados via pytest.mark.parametrize
  • ▸Funções auxiliares de validação de respostas, incluindo assert_status_code
  • ▸Suporte a filtros de pedidos e extensão fácil para arquiteturas multi-serviço

Como funciona

Um projeto declara o host base uma única vez com CamelConfig em tests/conftest.py. Depois, cada serviço recebe o seu próprio RouterMaker com um prefixo de caminho como /data-service/v1, e cada endpoint passa a ser um router reutilizável exposto como fixture do pytest. Os testes chamam router.get() ou post() e validam a resposta, pelo que o código de testes espelha a estrutura da própria API.

  • ▸Cabeçalhos por omissão para cada router (Content-Type: application/json de origem), além de set_headers e append_header, que só se aplicam ao pedido seguinte
  • ▸Parâmetros de consulta e filtros com set_filters() para paginação e pesquisa
  • ▸Validação de respostas com esquemas pydantic v2
  • ▸Router makers separados por versão da API (v1, v2) para serviços que evoluem em paralelo

Manutenção

O pycamel está publicado no PyPI desde 2022 e continua a ser mantido: a versão principal atual destina-se a Python 3.10+ e pydantic v2, os testes unitários correm no GitHub Actions e a cobertura é acompanhada no Codecov.

O resultado

A framework está orientada para a qualidade do código: Pylint para análise estática, além de Coverage e codecov para acompanhar a cobertura de testes.

Menções e fontes