Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

É uma boa prática aninhar/agrupar testes? (pytest)

Olá. Estou fazendo um teste de uma classe minha, mas tenho métodos que tem vários casos de testes. Por causa disso eu ficava repetindo o nome do método em todo caso de teste, e acabava ficando meio desorganizado visualmente. Digo desorganizado, porque, mesmo que esteja tudo em ordem, você tem que ficar lendo o nome de cada caso de teste pra ver quando está testando um outro método.

Então achei um lugar falando que posso fazer uma classe por método e agrupar os testes dentro dela. Ficaria assim:

class Test_get_bar:
    def test_should_return_bar(self):
        assert False

    def test_should_return_foo_if_param_is_false(self):
        assert False

class Test_get_foo:
    def test_should_return_foo(self):
        assert False

    def test_should_return_None_if_param_is_false(self):
        assert False

Em vez de:

def test_get_bar_should_return_bar(self):
    assert False

def test_get_bar_should_return_foo_if_param_is_false(self):
    assert False

def test_get_foo_should_return_foo(self):
    assert False

def test_get_foo_should_return_None_if_param_is_false(self):
    assert False

Isso é uma boa ou má prática? Se for má prática, qual seria a boa?

2 respostas
solução!

Oii Klaus, como você está?

Não há problemas em separar os testes em classes. Inclusive, na documentação do Unittest por exemplo, temos exemplos de testes que são agrupados por classes, segue abaixo:

No geral, não há regras rígidas quanto a organização de testes em classes em vez de funções. É uma questão de gosto pessoal. Particularmente, eu adoto o agrupamento em classes por questões de clareza, fica explícito a qual cenário estamos testando e quais são os testes para aquele cenário em específico.

Qualquer dúvida estou por aqui, tá bom?

Abraços e bons estudos!

Então vou seguir por classe mesmo. Também acho que fica muito mais claro o contexto.

Obrigado Nádia!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software