Nível: básico
Conteúdo:
- Configuração da suíte de testes
- Criação de scripts para recuperar e inserir dados em uma API
- Desenvolver testes e relatórios a partir dos scripts criados
O objetivo deste último artigo é te guiar na criação de relatórios do Pytest. Para quem está começando no desenvolvimento de testes de APIs, recomendo que veja os artigos anteriores (partes 1 e 2), mas se você já tem algum projeto em andamento e quer apenas criar reports e executar a suíte de testes inteira, pode seguir sem problemas.
Do que você irá precisar:
- Python 3+
- Pip (gerenciador de pacotes do Python)
- Algum editor de texto ou IDE (utilizo VSCODE por praticidade e gosto pessoal)
Relembrando nossos scripts de teste
Anteriormente, criamos um arquivo de teste para cada verbo visto (get, post, put e delete). Veja como encerramos o artigo passado:
test_get.py
![python](https://www.zup.com.br/wp-content/uploads/2021/03/5f50f744df4acb37f5a9c7d3_LSgxzcLBUOnIHuKTAebvuRF90PFOkT36lYiDZZABHre_jQ-kvpplEI4T_ckq2yS7dIWdvF4rxN6LUPE4srmOVNkvV3DpO-Q5GFkOO9oXJbqgyvL2pgbqlnyk1MNSeV7PSQjCBAP2.png)
test_post.py
![](https://www.zup.com.br/wp-content/uploads/2021/03/5f50f75f1e916f441f3b36e9_1Y_gi_lrjqY7SVO23zGkjgIYmFtVgnjks7dxLm46G741FK7YZQZbTu3cJppTidm7KJ9XKNyJLbEiTStRwz2ghrhWF28gEaQw6vem_0lOjYDNkiFKd0EnMg0yPSKgG_GRBDz33tU8.png)
test_put.py
![](https://www.zup.com.br/wp-content/uploads/2021/03/5f50f77236a04fc34ed8084e_w28lkNM6k240DH9h4NSs1a4rMlti8iLCuI1zv_efgMl_nr6-kk-Sz_AQnAkOjj9KtMscJrgnyMPUBApffo2yeBwJkD6YTmD60IR1fLdwYXpNzy6JOE03WlvO0VaB8Kd6N-RVNYp5.png)
test_delete.py
![](https://www.zup.com.br/wp-content/uploads/2021/03/5f50f785352380c1a22fcfc5_axkCI3TzsD5biEW0FjVBxDFjZz1VNZCPZQqHYgphmYChBnBYKYB5ylfdNG6HkycsoX-ZNdk5iXywKA9KM3jaxUWWQgRuUiRKTcu5UahalgcsMdVWMdrWmauvTb-J-4te8DHr64dF.png)
Configuração da suíte de testes
Tenha em mente algumas regras básicas de descobrimento de testes que o Pytest leva em consideração:
- Se nenhum argumento for informado, a descoberta de testes começa do testpaths ou do diretório atual (configuração desse projeto).
- A busca acontece recursivamente entre diretórios por padrão.
- Nesses diretórios, a busca leva em conta arquivos que tenham a configuração test_*.py ou *_test.py (por boa prática, criamos um diretório chamado tests/).
- Métodos que começam com test_
- Classes que começam com Test.
Execução
Mão na massa
Para execução de todos os testes, execute o comando pytest no diretório raiz do projeto:
![](https://www.zup.com.br/wp-content/uploads/2021/03/5f50f793104f4835553daff6_SCqfouhDwq5O6H44J5-RI87AZRg9rDVdaVgOT3O6sSwi_j9o2XW1fX_X8eBNXLjKIKQyAlYZsvwRaiS_aAFMdGeL0zqQgOTVAzY8j7FroR0YowtnCmIYbiQS3fQPK1pgaTsh_Ss0.png)
Nesse report padrão, conseguimos ver através do terminal as informações:
- Quantidade de testes executados
- Tempo total da execução
- OS e versão do Python
Adicione o parâmetro –durations=0 para exibir a duração de todos os testes:
![](https://www.zup.com.br/wp-content/uploads/2021/03/5f50f83aba0333af0b6ab52e_F2WITgKrZ_97H6XMxOpVRq7dTGQ-eFe3eWiCT4Qr89eW_1Zh2fG1D4bDVyWsMJgbFU4H6K0GFuXbSxpQ3db3OpDOmSyPTDEkNmOtZNw_ROyY3NQI_-hGsGjEGDjI13L1gX4VwkTK.png)
Adicione o parâmetro –durations=n (onde n é um número inteiro entre 1 e a quantidade de testes) para exibir a duração de todos os n testes mais lentos:
![](https://www.zup.com.br/wp-content/uploads/2021/03/5f50f87abcd5ec9f0ff450d2_haqZdx2v3nFcJnDMjowa4IGwu-vsE_sGIGomB0y4SxYdglK8VAlej3lBxRwmwaSlSkQsjo_cD_m4LHpiY6QEoC7UMfpT-LTca_MsMJjn9hwFW1YNwAUICe0C6MaUCczF1oBTOdv2.png)
Instale o pacote de report em formato html com o comando pip install pytest-html e adicione o parâmetro –html=report.html na execução de sua suíte:
![](https://www.zup.com.br/wp-content/uploads/2021/03/5f50f898fe5487d8685d541b_dJGhnLrSr-Wjv5BUjS_4xfvwoMwKEkLXHR8L4XVt-zCDEixJc8pPWzG_7yjzp3r3VSRmByXXNS38495sZhd9R0J3nTfSfIhEz_AJ6lLDf106xhu6wMPtAsjTsMd7Bh27YuZsBnj.png)
Instale o pacote de report em formato json com o comando pip install pytest-json-report –upgrade e adicione o parâmetro –json-report na execução de sua suíte:
![](https://www.zup.com.br/wp-content/uploads/2021/03/5f50f8ab4c08292f06e7b8b6_rRIHVz9Z74DvWJdRs6QCDidGpQgBtGi_zDNEXl9n_sTZCI6kd9u-lAt1vW3WHjWMFTjEyhXAw_STgFOJf6kEN4hj8e-0wfybhzWH4e6elulo9GZcilxu_7cB6vX4SJVy2YDwBCWg.png)
Chegamos ao fim dessa série.
Espero que esse tutorial seja útil pra vc! Ainda ficou com alguma dúvida no assunto? Conta pra gente nos comentários!