• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python - testy jednostkowe atrybutów klasy.

Object Storage Arubacloud
+1 głos
326 wizyt
pytanie zadane 7 listopada 2019 w Python przez Kamil Początkujący (430 p.)

Hej, mam za zadanie stworzyć klasę Employee i podać w metodzie init obiekty, oraz odrazu zapisać je jako atrybuty:
 

def __init__(self, imie, nazwisko, EarnYear):
    self.imie = imie
    self.nazwisko = nazwisko
    self.EarnYear = EarnYear

Oraz dodatkowo stworzyłem klasę give_raise(), która spowoduje zwiększenie wynagrodzenia domyślnie o 5000zł, choć zaakceptuje także inną kwotę:
 

def give_raise(self, ZwiekszenieWynag = 5000, dodatkoweWyn = ''):
    if self.EarnYear:
        self.EarnYear += ZwiekszenieWynag
    else:
        self.EarnYear = dodatkoweWyn

Teraz mam problem aby stworzyć metody testowe. Na początku chciałem sprawdzić atrybuty klasy takie jak imie, nazwisko i EarnYear lecz wywala taki o to komunikat: 
AssertionError: <EarnClass.Employee object at 0x0339A330> != 'x y 100'. Nie wiem w sumie, czy mogę w ogóle ztesotwać atrybuty klasy w testach jednostkowych.
Tutaj kod z Testowej klasy:

import unittest
from EarnClass import Employee


class TestGiveRaise(unittest.TestCase):

    def setUp(self):
        self.data = Employee('x', 'y', '100')

    def test_give_default_raise(self):
       
        self.assertEqual(self.data, 'x y 100')

Czy to problem z tym, że instacja błędnie próbuje wychwycić typ _str?
 Bardzo bym prosił o pomoc, bo siedzę i wiem że zadanie jest pewnie łatwe, ale głowię się już nad tym zadaniem dłuuuższą chwilę..

 

2 odpowiedzi

+2 głosów
odpowiedź 7 listopada 2019 przez adrian17 Ekspert (344,860 p.)
wybrane 7 listopada 2019 przez Kamil
 
Najlepsza

klasę give_raise()

(metodę)

self.assertEqual(self.data, 'x y 100')

Um... próbujesz porównać instancję klasy Employee do stringa. self.data nie jest stringiem, więc jasne że assertEqual się nie uda ;)

Jeśli chcesz sprawdzić pola, to porównaj same pola:

self.assertEqual(self.data.imie, 'x')

(albo porównać same instancje klasy, tylko potrzebujesz wtedy dodać implementację __eq__ żeby == działało)

komentarz 7 listopada 2019 przez Kamil Początkujący (430 p.)
Dzięki wielkie! :)
0 głosów
odpowiedź 7 listopada 2019 przez mokrowski Mędrzec (155,460 p.)
W obiekcie typu TestGiveRaise, masz w atrybucie data, obiekt Employee. Jak go więc chcesz porównać ze stringiem 'x y 100' ?

Podobne pytania

0 głosów
0 odpowiedzi 232 wizyt
0 głosów
2 odpowiedzi 3,119 wizyt
pytanie zadane 28 października 2018 w Python przez Eliro Stary wyjadacz (12,160 p.)
0 głosów
1 odpowiedź 256 wizyt
pytanie zadane 12 listopada 2018 w Python przez Eliro Stary wyjadacz (12,160 p.)

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...