1
resposta

Faça como eu fiz: Test-Driven Development

from codigo.bytebank import Funcionario

class TestClass():
    """
    Classe de testes para verificar o funcionamento da classe Funcionario.
    
    Foca em validar os métodos de cálculo de idade, extração de sobrenome
    e decréscimo salarial.
    """
    
    def test_quando_idade_recebe_13_03_2000_deve_retornar_25(self):
        """
        Testa o método idade() para um funcionário nascido em 13/03/2000.
        
        Given:
            - Data de nascimento válida no formato 'DD/MM/AAAA'
        When:
            - Cria instância com data '13/03/2000'
            - Chama o método idade()
        Then:
            - Deve retornar 25 anos (considerando ano base 2025)
        """
        # Given - Contexto
        entrada = '13/03/2000'  
        esperado = 25
        
        # When - ação   
        funcionario_teste = Funcionario('Teste', entrada, 1111)
        resultado = funcionario_teste.idade()  

        # Then - desfecho
        assert resultado == esperado  
        
    def test_quando_sobrenome_recebe_Cristofer_Ruan_deve_retornar_Ruan(self):
        """
        Testa a extração do sobrenome para o nome 'Cristofer Ruan'.
        
        Verifica:
            - Remoção de espaços em branco excedentes
            - Captura do último nome após split
            - Case sensitive do resultado
            
        Cenário:
            Nome com dois termos e espaços antes/depois
        """
        # Given - Contexto
        entrada = ' Cristofer Ruan ' 
        esperado = 'Ruan'
        
        #When - Ação
        cristofer = Funcionario(entrada, '23/07/2002', 11111)
        resultado = cristofer.sobrenome() 
        
        # Then - desfecho
        assert resultado == esperado 
        
    def test_quando_decrescimo_salario_recebe_100000_retorna_90000(self):
        """
        Testa o decréscimo de 10% para salários altos (>= R$100.000,00).
        
        Critérios:
            - Aplica 10% de redução em salários igual ou acima do limite
            - Verifica cálculo exato sem arredondamentos
            - Valida alteração direta no atributo salario
            
        Caso específico:
            Entrada: 100.000 → Saída esperada: 90.000
        """
        # Given - Contexto
        entrada_salario = 100000   
        entrada_nome = 'Paulo Bragança' 
        retorno = 90000
        
        #When - Ação
        funcionario_teste = Funcionario(entrada_nome, '09/09/1989', entrada_salario)
        funcionario_teste.decrescimo_salario()
        resultado = funcionario_teste.salario
        
        # Then - desfecho
        assert resultado == retorno
    
1 resposta

Olá, Cristofer. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Ótimo como você estruturou os testes com Given-When-Then, deixando a lógica bem organizada e fácil de entender. A abordagem para validar o cálculo da idade e o decréscimo salarial ficou clara e bem fundamentada.

Uma dica interessante é utilizar parametrize do pytest para testar múltiplos casos sem repetir código. Veja este exemplo:


import pytest
from codigo.bytebank import Funcionario

@pytest.mark.parametrize("entrada, esperado", [
    ('13/03/2000', 25),
    ('10/06/1995', 30)
])
def test_idade(entrada, esperado):
    funcionario = Funcionario('Teste', entrada, 1111)
    assert funcionario.idade() == esperado

Isso evita duplicação e deixa os testes mais dinâmicos.

Conte com o apoio do Fórum. Abraços e bons estudos.