Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Test] Implementar teste na API para o /schedule #32

Open
Thulio-Carvalho opened this issue Oct 8, 2020 · 2 comments · May be fixed by #42
Open

[Test] Implementar teste na API para o /schedule #32

Thulio-Carvalho opened this issue Oct 8, 2020 · 2 comments · May be fixed by #42
Assignees
Labels
enhancement New feature or request

Comments

@Thulio-Carvalho
Copy link
Member

Descreva a feature em detalhes

Necessidade da feature:

Como ela pode ser implementada:

Contexto adicional:

@Thulio-Carvalho Thulio-Carvalho added the enhancement New feature or request label Oct 8, 2020
@igorlimam
Copy link
Collaborator

igorlimam commented Oct 12, 2020

Descreva a feature em detalhes

Testes de unidade executam o código de forma controlada com o intuito de comparar uma saída esperada a atual. O estado do sistema é ditado anteriormente para que possa se concentrar apenas na funcionalidade sob teste. Isso significa que cada teste possui uma descrição, anterior à execução das funções testadas, do que é necessário para que a situação investigada ocorra.

O controle do estado do sistema ocorre pelo uso de mocks proporcionados pela ferramenta de teste.

Necessidade da feature:

A implementação de testes proporciona maior confiabilidade a um código. Estressar uma funcionalidade através deles oferece debug codificado. Além disso, se bem escrito, serve como uma documentação em código da funcionalidade, já que cada possibilidade de execução deve ser explorada e verificada.

Os testes feitos nessa funcionalidade devem verificar a corretude da implementação através do estresse de diferentes saídas proporcionadas por ela. Dito isso, cada teste confirmará o comportamento esperado sob determinadas condições, corroborando com o objetivo geral dos testes.

Como ela pode ser implementada:

Uma ferramenta simples e poderosa para a implementação de testes é o pytest. Além disso, uma estratégia de testes que funciona muito bem é a GIVEN-WHEN-THEN.

Pytest oferece um padrão para mocks, porém, os mocks do unittest são mais poderosos e simples de serem usados

O pytest será a coluna vertebral do testes, os mocks servirão para controlar o estado do sistema durante o teste. Note que cada teste possui três fases:

Given (dado que): é o preparo do sistema, nessa parte, é instanciado tudo o que for necessário para que o estado de interesse aconteça

When (quando ___ acontece): é a execução da função de teste, aqui é onde será extraído o nosso "actual" ou saída verdadeira da funcionalidade.

Then (então ____ são obtidos): é a parte de comparação do teste, nessa fase verificamos se a saída da função estressada corresponde com o esperado dela. É de extrema importância que essa parte possua único e exclusivamente comparações, artifícios do python como all e any são recomendados para comparações em conjuntos.

Contexto adicional:

Um diretório "tests" exclusivo para testes deve ser criado, juntamente com o padrão de que todo módulo de teste, bem como as funções de teste, comecem com o nome "test".

@Thulio-Carvalho
Copy link
Member Author

Ótima documentação de issue!

@igorlimam igorlimam linked a pull request Nov 18, 2020 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants