Tomasz Gądek Home Page

tgadek.bitbucket.io

Testowanie i Jakość Oprogramowania

Laboratorium 2: Framework unittest.

Framework unittest

W Pythonie do tworzenia testów jednostkowych najczęściej używa się frameworka unittest. Spójrz na podstawową strukturę testu przy użyciu tego frameworka.

test calc

Postaraj się dokończyć implementacje testów (nie zapominamy o konwencji AAA w metodach) oraz klasy Calc (metody: add(), subtract() i multiply()). Po uruchomieniu testów przeanalizuj logi. Zanim zaczniesz działać przeczytaj omówienie struktury zaprezentowanych testów.

Struktura testów

  • W pierwszej kolejności importujemy bibliotekę unittest, która zawiera funkcje do testowania.
  • Każdy test jednostkowy w unittest musi być zawarty w klasie, która dziedziczy po unittest.TestCase.
  • Metoda setUp() jest wywoływana przed każdym testem. Jest to miejsce, gdzie inicjalizujemy obiekty lub zasoby, które będą używane w testach.
  • Każda metoda testowa musi zaczynać się od test_. Jest to konwencja, którą unittest wykorzystuje do rozpoznawania metod, które są testami. Każda metoda testowa sprawdza jedną, konkretną funkcjonalność. W przypadku nieprawidłowego wyniku, test zakończy się błędem.
  • assertEqual() jest to najczęściej używana metoda do porównywania oczekiwanego wyniku z wynikiem rzeczywistym. Sprawdza, czy oba argumenty są sobie równe. Jeśli tak, test przechodzi pomyślnie, w przeciwnym razie test się nie powiedzie.
  • assertRaises() jest używana do testowania, czy w odpowiednich sytuacjach jest rzucany wyjątek. W tym przypadku sprawdzamy, czy przy próbie dzielenia przez zero zostanie rzucony wyjątek ValueError.
  • tearDown() jest wywoływana po każdym teście i służy do usuwania zasobów lub zamykania połączeń, jeśli to konieczne.
  • Testy w unittest uruchamiamy za pomocą komendy unittest.main(), co powoduje automatyczne wykrycie i uruchomienie wszystkich metod testowych w klasie.

Operacje na koszyku zakupowym

Twoje zadanie będzie polegało implementacji koszyka zakupowego oraz testów jednostkowych. Poniżej została zaprezentowana dokumentacja w formie skryptu Python.

shopping_cart.py

Przed implementacją konkretnej metody staraj się napisać test.


Wiem, że nic nie wiem

~Sokrates