1
resposta

[Projeto] colocando em pratica

class de teste:

from codigo.bytebank import Funcionario
import pytest


class TestClass:
    def test_quando_idade_recebe_13_03_200_deve_retorna_24(self):
        """ Teste na função idade """
        entrada = '13/03/2000' # contexto
        esperado = 24
        # Arrange
        Funcionario_test = Funcionario('teste',entrada,1111)
        # Assert / when-ção 
        resultado = Funcionario_test.idade( ) 

        assert resultado == esperado

    def test_quando_sobrenome_recebe_Lucas_carvalho_deve_retorn_carvalho(self):
        entrada = ' Lucas Carvalho '
        esperado = 'Carvalho'

        Funcionario_tes = Funcionario(entrada, '11/11/2000',2000)

        resultado = Funcionario_tes.sobrenome()

        assert resultado == esperado

    def test_quando_descrescimo_salario_recebe_100000_deve_retorna_90000(self):
        entrada_salario = 100000
        entrada_nome = 'Paulo Bragança'
        esperado = 90000

        funcionario_tes = Funcionario(entrada_nome,'11/11/2000',entrada_salario)

        funcionario_tes.decrescimo_salario()

        resultado = funcionario_tes.salario

        assert resultado == esperado


class modelo:

from datetime import date

class Funcionario:
    def __init__(self, nome, data_nascimento, salario):
        self._nome = nome
        self._data_nascimento = data_nascimento
        self._salario = salario

    @property
    def nome(self):
        return self._nome

    @property
    def salario(self):
        return self._salario

    def idade(self):
        data_nascimento = self._data_nascimento.split('/')
        ano_nascimento = data_nascimento[-1]
        ano_atual = date.today().year
        return ano_atual - int(ano_nascimento)

    def funcionario_is_diretor(self):
        sobrenomes = ['Bragança', 'Windsor', 'Bourbon', 'Yamato', 'Al Saud', 'Khan', 'Tudor', 'Ptolomeu']
        return ((self.sobrenome() in sobrenomes) and (self._salario >= 10000)  )

    def decrescimo_salario(self):
        if  (self.funcionario_is_diretor()):
            decrescimo = self._salario * 0.1
            self._salario = self._salario - decrescimo
             
    

    def sobrenome(self):
        nome_completo = self._nome.strip()
        nome_quebrado = nome_completo.split(' ')
        return nome_quebrado[-1]

    def calcular_bonus(self):
        valor = self._salario * 0.1
        if valor > 1000:
            valor = 0
        return valor

    def __str__(self):
        return f'Funcionario({self._nome}, {self._data_nascimento}, {self._salario})'

Resultado dos teste:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Bom dia Leandro! Tudo bem com você?

Obrigado por compartilhar seu código com a comunidade Alura. Para contribuir ainda mais com esse assunto, deixo algumas dicas que podem elevar ainda mais a qualidade do código dos seus testes em um momento futuro:

  • Seus nomes de teste são bons, mas pode-se torná-los ainda mais descritivos. Por exemplo, test_idade_para_data_nascimento_13_03_2000_deve_retornar_24 torna ainda mais claro o que está sendo testado.
  • Considere usar classes para agrupar testes relacionados. Por exemplo, todos os testes relacionados à idade poderiam estar em uma classe TestIdade.
  • Para valores que se repetem nos testes, como datas ou nomes, considere criar constantes no topo do arquivo de teste. Isso torna o código mais legível e fácil de manter.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!