Skip to content

Commit

Permalink
Adicionando notas sobre efeitos colaterais nos testes na aula 03
Browse files Browse the repository at this point in the history
  • Loading branch information
dunossauro committed Sep 7, 2024
1 parent 2b4f01a commit 7f8c40a
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion aulas/03.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@ Boas-vindas de volta à nossa série de aulas sobre a construção de uma aplica

O objetivo desta aula é implementar um sistema de cadastro de usuários na nossa aplicação. Ao final, você conseguirá cadastrar, listar, alterar e deletar usuários, além de realizar testes para validar estas funcionalidades.

??? note "Nota para pessoas **mais experiente** sobre essa aula"
O princípio por trás dessa aula é demonstrar como construir os endpoints e os testes mais básicos possíveis.

Talvez lhe cause estranhamento o uso de um banco de dados em uma lista e os testes sendo construídos a partir de efeitos colaterais. Mas o objetivo principal é que as pessoas consigam se concentrar na criação dos primeiros testes sem muito atrito.

Estas questões serão resolvidas nas aulas seguintes.

## CRUD e HTTP

No desenvolvimento de APIs, existem quatro ações principais que fazemos com os dados: criar, ler, atualizar e excluir. Essas ações ajudam a gerenciar os dados no banco de dados e na aplicação web. Vamos nos focar nesse primeiro momento nas relações entre os dados.
Expand Down Expand Up @@ -493,6 +500,13 @@ Nosso teste da rota GET tem que verificar se a recuperação dos usuários está

Com as rotas POST e GET implementadas, agora podemos criar e recuperar usuários. Implementaremos a próxima operação CRUD: Update.

!!! warning "Coisas que devemos considerar sobre este e os próximos testes"
Note que para que esse teste seja executado com sucesso o teste do endpoint de `POST` tem que ser executado antes. Isso é problemático no mundo dos testes. Pois cada teste deve estar isolado e não depender da execução de nada externo a ele.

Para que isso aconteça, precisaremos de um mecanismo que reinicie o banco de dados a cada teste, mas ainda não temos um banco de dados real. O banco de dados será introduzido na aplicação na [aula 04](04/md)

O mecanismo que fará com que os testes não interfiram em outros e sejam independentes será introduzido na [aula 05](05.md/#testando-o-endpoint-post-users-com-pytest-e-fixtures).

## Implementando a Rota PUT

A rota PUT é usada para atualizar as informações de um usuário existente. No contexto do CRUD, o verbo HTTP PUT está associado à operação "Update". Se a solicitação for bem-sucedida, a rota deve retornar o status HTTP 200 (OK). No entanto, se o usuário solicitado não for encontrado, deveríamos retornar o status HTTP 404 (Não Encontrado).
Expand Down Expand Up @@ -618,12 +632,14 @@ E pronto! As alterações estão seguras no histórico do git, e podemos continu

## Conclusão

Com a implementação bem-sucedida das rotas CRUD, demos um passo significativo na construção de uma API robusta e funcional com FastAPI. Agora podemos manipular usuários - criar, ler, atualizar e excluir - o que é fundamental para muitos sistemas de informação.
Com a implementação bem-sucedida das rotas CRUD, demos um passo significativo na construção de uma funcional com FastAPI. Agora podemos manipular usuários - criar, ler, atualizar e excluir - o que é fundamental para muitos sistemas de informação.

O papel dos testes em cada etapa não pode ser subestimado. Testes não apenas nos ajudam a assegurar que nosso código está funcionando como esperado, mas também nos permitem refinar nossas soluções e detectar problemas potenciais antes que eles afetem a funcionalidade geral do nosso sistema. Nunca subestime a importância de executar seus testes sempre que fizer uma alteração em seu código!

Até aqui, no entanto, trabalhamos com um "banco de dados" provisório, na forma de uma lista Python, que é volátil e não persiste os dados de uma execução do aplicativo para outra. Para nosso aplicativo ser útil em um cenário do mundo real, precisamos armazenar nossos dados de forma mais duradoura. É aí que os bancos de dados entram.

Outro ponto que deve ser destacado é que nossas implementações de testes sofrem interferência dos testes anteriores. Testes devem funcionar de forma isolada, sem a dependência de um teste anterior. Vamos ajustar isso no futuro.

No próximo tópico, exploraremos uma das partes mais críticas de qualquer aplicativo - a conexão e interação com um banco de dados. Aprenderemos a integrar nosso aplicativo FastAPI com um banco de dados real, permitindo a persistência de nossos dados de usuário entre as sessões do aplicativo.

{% include "templates/quiz.md" %}

0 comments on commit 7f8c40a

Please sign in to comment.