Witam serdecznie.
Uczę się Pythona i jako początkujący korzystam z książki PYTHON Instukcje dla programisty jestem w rozdziale 11 o testowaniu. Korzystam z unittest i mam problem z testowaniem klasy oraz metodą setUp(). Testowanie z palca działa dobrze, ale mam problem z testem jednostkowym. Może zacytuje treść zadania:
,,Przygotuj klasę o nazwie Employee. Metoda __init() powinna pobierać imię, nazwisko i roczne wynagrodzenie, a następnie zapisywać te informację w postaci atrybutów. Utwórz metodę o naziwe give_raise(), która spowoduje zwiększenie wynagrodzenia domyślnie o 5000 zł, choć zaakceptuje także inną kwotę.
Przygotuje zestaw testów dla klasy Employee. Utwórz dwie metody testowe test_give_default_raise() i test_give_custom_raise(). Wykorzystaj metodę setUp(), aby uniknąć konieczności tworzenia nowego egzemplarza klasy Employeew każdej metodzie testowej. Wykonaj zestaw testów i upewnij się, że oba testy zostaną zaliczone.''
A to co zrobiłem:
plik employee.py
class Employee():
def __init__(self, first_name, last_name, amounts):
self.first_name = first_name
self.last_name = last_name
self.amounts = amounts
def give_raise(self, amount=5000):
print(f"Twoja premia w tym roku wynosi {amount} zł")
self.amounts += int(amount)
print(f"Twoje wynagrodzenie w tym roku wynosi {self.amounts} zł")
#first_name = input('Podaj swoje imię: ')
#last_name = input('Podaj swoje nazwisko: ')
#amounts = int(input('Podaj swoje roczne wynagrodzenie: '))
#new_employe = Employee(first_name, last_name, amounts)
#amount = 2000
#new_employe.give_raise(amount)
plik z testem employe_unitest.py
import unittest
from employee import Employee
class TestEmoloyee(unittest.TestCase):
def setUp(self):
self.new_employee = Employee('Kamil', 'Kowalski', 50000)
self.amount = 2000
self.respons = [55000 ,52000]
def test_give_default_raise(self):
"""test czy domyślne danie premii zwiększy roczne wynagrodzenie"""
self.assertEqual(self.respons[0], self.new_employee.give_raise())
def test_give_custom_raise(self):
"""test czy danie premii zwiększy roczne wynagrodzenie"""
self.assertEqual(self.respons[1], self.new_employee.give_raise(self.amount))
if __name__ == '__main__':
unittest.main()
Niestety podczas testu dostaję błąd o treści: AssertionError: 52000 != None. Nie ma pojęcia, co robię źle. Bardzo proszę o pomoc.