Uma forma de executar testes usando unittest Python somente nas classes filhas
20 Aug 2018
Reading time ~1 minute
Estava buscando fazer testes em python usando unittest, para isso tinha algumas premissas nesses testes:
- Python 3
- Prático
- Código Pythônico
- Orientado a Objeto
- Fácil criar testes
- Sem código duplicado
Desse jeito, a primeira ideia foi colocar o comportamento na classe pai e fazer herdar para as filhas, o unittest vai tratar todas as classes herdadas de TestCase como classe de testes, então, fiz o OO como manda a cartilha.
Mas infelizmente ao rodar meus testes a saída ficou assim
Além de tomar erro, não quero que seja executado os testes da minha classe pai, somente das classes filhas.
Minha primeira solução foi colocar um if verificando o tipo de objeto antes, mesmo não dando erro, e sempre com sucesso nos testes da classe pai, acaba por deixar o código extremamente feio, e é uma saída preguiçosa.
Mas achei uma solução mais interessante para o problema:
Usando o conceito de mixin, confesso que no começo me senti desconfortável com esse código, mas a partir de um segundo momento, ele me pareceu mais interessante, dessa forma consigo colocar os comportamentos nas classes pai e ao criar uma nova classe de testes esse comportamento virá por herança.
Ainda gostaria de deixar o “OO mais OO”, colocando a classe pai filha de TestCase e fazendo alguma forma de ignorar esses testes, mas não encontrei nenhuma forma mais interessante para isso, se alguém pensar de alguma outra forma, mande nos comentários.
Até a próxima.