1
resposta

def setUP(self) duvidas

em "def setUP(self)" das classes TesteDominioA e TesteDominioB tem como retirar a 'parte ' de usuários que é comum as duas e colocar fora das classes para servir as duas sem precisar repetir ?

from unittest import TestCase
from dominio import Usuario, Lance, Leilao


class TesteDominioA(TestCase):

    def setUp(self):
        self.leilao_01 = Leilao('Celular')

        self.usuario_01 = Usuario('Roberto')
        self.usuario_02 = Usuario('Manuela')
        self.usuario_03 = Usuario('Vera')

        self.lance_01 = Lance(self.usuario_01, 100)
        self.lance_02 = Lance(self.usuario_02, 999)
        self.lance_03 = Lance(self.usuario_03, 50000)

        self.leilao_01.propoe(self.lance_01)
        self.leilao_01.propoe(self.lance_02)
        self.leilao_01.propoe(self.lance_03)

    def teste_verifica_valor_menor_lance(self):

        menor_valor_esperado = 100
        self.assertEqual(menor_valor_esperado, self.leilao_01.menor_lance)

    def teste_verifica_valor_maior_lance(self):

        maior_valor_esperado = 50000
        self.assertEqual(maior_valor_esperado, self.leilao_01.maior_lance)


class TesteDominioB(TestCase):

    def setUp(self):
        self.leilao_02 = Leilao('Pendrive')

        self.usuario_01 = Usuario('Roberto')
        self.usuario_02 = Usuario('Manuela')
        self.usuario_03 = Usuario('Vera')

        self.lance_04 = Lance(self.usuario_01, 15)
        self.lance_05 = Lance(self.usuario_02, 10)
        self.lance_06 = Lance(self.usuario_03, 25)

        self.leilao_02.propoe(self.lance_04)
        self.leilao_02.propoe(self.lance_05)
        self.leilao_02.propoe(self.lance_06)

    def teste_verifica_valor_menor_lance(self):

        menor_valor_esperado = 10
        self.assertEqual(menor_valor_esperado, self.leilao_02.menor_lance)

    def teste_verifica_valor_maior_lance(self):

        maior_valor_esperado = 25
        self.assertEqual(maior_valor_esperado, self.leilao_02.maior_lance)
1 resposta

Oi Roberto, tudo bom?

Muito bem observado! Conforme vamos evoluindo nossos cenários de teste, é comum que boa parte dos cenários comecem a se repetir.

Nesse caso, o ideal é sempre tratar nosso código de teste assim como trataríamos qualquer outro código do sistema e isolar os comportamentos em comúm mesmo.

Porém, não acredito que seja o caso aqui ainda. Isso porque a inicialização de um Usuario hoje é muito simples, ocupa apenas uma linha já que passamos o nome dele no construtor.

Se para construir um Usuario precisássemos de outras entidades e isso ocupasse mais linhas e poluisse visualmente o cenário de teste, ai sim precisaríamos isolar em uma classe e evitar a repetição =)

Abraço