PyUnit Tutorial: Python Unit Testing Framework (z przykładem)

Spisie treści:

Anonim

Co to jest testowanie jednostkowe?

Testy jednostkowe w Pythonie są wykonywane w celu zidentyfikowania błędów na wczesnym etapie tworzenia aplikacji, gdy błędy są mniej powtarzające się i mniej kosztowne w naprawie.

Test jednostkowy to skryptowy test na poziomie kodu zaprojektowany w Pythonie w celu zweryfikowania małej „jednostki” funkcjonalności. Test jednostkowy to zorientowana obiektowo struktura oparta na urządzeniach testowych.

Techniki testowania jednostkowego języka Python

Python Unit Testing polega głównie na testowaniu określonego modułu bez dostępu do żadnego zależnego kodu. Programiści mogą używać technik, takich jak kody pośredniczące i makiety, do rozdzielania kodu na „jednostki” i przeprowadzania testów na poziomie jednostki na poszczególnych elementach.

  • TDD Test-Driven Development: Testy jednostkowe powinny być wykonywane razem z Pythonem, a do tego programiści używają metody Test-Driven Development. W metodzie TDD najpierw projektujesz testy Python Unit, a dopiero potem kontynuujesz pisanie kodu, który zaimplementuje tę funkcję.
  • Stubs and Mocks: to dwie główne techniki symulujące fałszywe metody, które są testowane. Stub jest używany do wypełnienia jakiegoś uzależnienia od wymaganej dla testów jednostkowych, aby funkcjonować poprawnie. Z drugiej strony Mock to fałszywy obiekt, który uruchamia testy, w których umieszczamy asercję.

    Intencje obu metod są takie same, aby wyeliminować testowanie wszystkich zależności klasy lub funkcji.

Struktura testów jednostkowych Pythona

Aby ułatwić proces testowania jednostkowego i poprawić jakość projektu, zaleca się strukturę testów jednostkowych języka Python. Struktura testów jednostkowych obejmuje platformę

  • PyUnit: PyUnit obsługuje osprzęt, przypadki testowe, zestawy testów i moduł uruchamiający testy do automatycznego testowania kodu. W PyUnit możesz organizować przypadki testowe w pakiety z tymi samymi urządzeniami
  • Nos: Wbudowane wtyczki Nose pomagają w przechwytywaniu danych wyjściowych, pokryciu kodu, testach dokumentów itp. Składnia nosa jest znacznie prostsza i zmniejsza bariery w pisaniu testów. Rozszerza Python unittest, aby ułatwić testowanie.
  • Doctest: Skrypt testowy Doctest jest umieszczony w pliku docstring z małą funkcją na dole pliku. Doctest umożliwia przetestowanie kodu, uruchamiając przykłady zawarte w dokumentacji i sprawdzając, czy zwróciły oczekiwane wyniki. Przykład użycia doctest jest mniej szczegółowy i nie obejmuje przypadków specjalnych. Są przydatne jako wyrazista dokumentacja głównego przypadku użycia modułu i jego komponentów.

Testowanie jednostkowe za pomocą PyUnit

Pyunit to Pythonowy port JUnit. W ramach Pyunit w module unittest znajduje się pięć kluczowych klas.

  • Klasa TestCase : Klasa TestCase zawiera procedury testowe i udostępnia punkty zaczepienia do wykonywania każdej procedury i późniejszego czyszczenia
  • Klasa TestSuite : służy jako kontener kolekcji i może zawierać wiele obiektów testcase i wiele obiektów testsuites
  • Klasa TestLoader : ta klasa ładuje przypadki testowe i zestawy zdefiniowane lokalnie lub z pliku zewnętrznego. Emituje obiekty zestawu testowego, które posiadają te zestawy i walizki
  • Klasa TextTestRunner : aby uruchomić testy, obsługuje standardową platformę do wykonywania testów
  • Klasa TestResults : oferuje standardowy kontener dla wyników testów

Projektowanie przypadku testowego do testowania w języku Python przy użyciu PyUnit

Test jednostkowy zapewnia klasę bazową, przypadek testowy, którego można użyć do tworzenia nowych przypadków testowych. Do projektowania przypadku testowego służą trzy zestawy metod

unittest.TestCase

setUp()teardown()skipTest(aMesg:string)fail(aMesg:string)id():stringshortDescription():string

W pierwszym zestawie znajdują się haczyki przed i po teście. Metoda setup () rozpoczyna się przed każdą procedurą testową, a teardown () po procedurze.

Drugi zestaw metod kontroluje wykonanie testu. Obie metody przyjmują ciąg komunikatu jako dane wejściowe i obie anulują trwający test. Ale metoda skiptest () przerywa bieżący test, podczas gdy metoda fail () całkowicie go kończy.

Ostatnia lub trzecia metoda pomaga w określeniu testu. Metoda id () zwraca ciąg znaków składający się z nazwy obiektu testcase i procedury testowej. A metoda shortDescription () zwraca komentarz docstr przy inicjowaniu każdej procedury testowej.

Zalety korzystania z testów jednostkowych w języku Python

  • Pomaga wykryć błędy na wczesnym etapie cyklu rozwoju
  • Pomaga w pisaniu lepszych programów
  • Łatwo synchronizuje się z innymi metodami i narzędziami testującymi
  • Będzie miał o wiele mniej błędów
  • W przyszłości łatwiej będzie zmodyfikować, przy mniejszych konsekwencjach