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: