Python Doctest

Python Doctest
„Wiemy, że Docstring Pythona zawiera więcej szczegółów na temat jego funkcji i klas. Pakiety Doctest piszą program, który zaczyna się od >>> i kontrastuje wyniki z oczekiwaniami. Wykonując ilustracje zawarte w specyfikacji i potwierdzając, że zapewniają one pożądane wyniki, Doctest narzędzie umożliwia ocenę skryptu. Wyodrębnia próbki z tekstu odniesienia, wykonuje je, a następnie kontrastuje wyniki z wartością docelową.

Fakt, że nie było interfejsu API do zapamiętania w najbardziej podstawowej wersji, sprawia, że ​​Doctest jest prostszy dla wielu programistów do korzystania z góry. Tworzenie testów Doctest może być trudniejsze niż tylko konsumowanie jednortowe, nawet gdy przypadki stają się bardziej skomplikowane, ponieważ nie ma obsługi zasobów."

Przykład 01

Zacznijmy od pierwszego przykładu tego artykułu. Zaczynaliśmy ten przykład z importem modułu „Doctest” na pierwszej linii. Następnie definiujemy nową funkcję, „testowanie” parametrem „args” wskaźnika wskazującego na użycie wartości liczb całkowitych dla metody testowania. W ramach tej metody używamy potrójnych cytatów do przekazania wartości liczb całkowitych do metody „testowania”, aby sprawdzić, czy suma wszystkich przekazanych wartości jest równa określonej wartości zdefiniowanej w następnym wierszu.

Tak więc przekazaliśmy 5 wartości do metody testowania i oczekiwaliśmy wyniku 49 jako suma. Następnie wypróbowaliśmy kolejny test, przekazując trzy liczby do funkcji testowej, oczekując wyniku 22, aw ostatnim, ponownie 5 wartości, aby oczekiwać wyniku 15. Funkcja sum () przyjmuje wartości przekazane do funkcji testowania jako argumentu i zwracając sumę wszystkich. Zastosowano tutaj funkcję testmod () modułu Pythona, aby zeznawać, że obliczona wartość jest taka sama jak wartość oczekiwana. Jeśli nie, rzuci błąd na naszą konsolę.

Zapiszmy i wykonajmy ten program w narzędziu Spyder 3, aby zobaczyć, co dzieje się w części testowej. Szczegółowy kod tego przykładu jest widoczny na zrzucie ekranu.

Po wykonaniu tego kodu Pythona otrzymaliśmy wyświetlane dane wyjściowe. Pokazuje, że program próbuje przetestować 5 wartości i oczekuje 49 jako sumy. Zwrócona wartość „OK” pokazuje, że test został przekazany i zatwierdzony; Zwrócona suma to 49. Następny test zastosowano do trzech wartości, oczekując 22 jako suma, podczas gdy test nie powiodła się, ponieważ suma, którą otrzymaliśmy.

Po zastosowaniu funkcji testowania Doctest na następnych 5 wartościach, zdaliśmy test zgodnie z oczekiwaniami, a zwrócona wartość suma wynosi 15. Ostatecznie donieśli o wyniku, że w sumie 2 testy zostały zemdlone z 3. Na zrzucie ekranu pokazano wynik tego przykładu.

Przykład 02

Używaliśmy innego przykładu do użycia modułu Doctest w naszym kodzie Python, aby zeznawać o innym stanie matematycznym. Tak więc rozpoczęliśmy ten przykład od importu funkcji TestMod pakietu Doctest w Pythonie. Funkcja „fakt” została zdefiniowana przez przyjmowanie wartości zmiennej „v” jako argumentu. Potrójne cytaty, a następnie znak >>> używają funkcji fact (), aby znaleźć czynnik „4” i „2” na dwóch różnych liniach. Podczas gdy oczekiwany wynik wynosiłby w tym przypadku 24 i 3.

Warunek „IF” został użyty do sprawdzenia, czy wartość zmiennej „v” przekazywanej do funkcji faktów jest równa lub mniej niż 1 i zwraca 1; W przeciwnym razie czynnik wartości „v” zostałby obliczony przez wzory „V*fakt (V-1)”.

Funkcja main () ma użyć funkcji TESMOD () przy użyciu funkcji „fakt” w niej. Byłoby sprawdzone, że czynnik zarówno wartości „4”, jak i „2” przekazywany do funkcji faktów () wynosiłby 24 i 3, czy nie. Ten program został zapisany i jest teraz gotowy do użycia. Szczegółowy kod tego przykładu jest widoczny na zrzucie ekranu.

Po uruchomieniu musimy wiedzieć, że czynnik 4 zwrócony przez funkcję wynosi 24, co jest równe oczekiwanym wyniku, tj.mi. test został uchwalony w tym przypadku, ja.mi. 24. Dla drugiej wartości test nie powiódł się, ponieważ oczekiwany czynnik 2 wynosi 3, podczas gdy rzeczywisty wynik musi wynosić 2. Tak więc raport pokazuje, że 1 test został zdany, a 1 nie powiodło się. Na zrzucie ekranu pokazano wynik tego przykładu.

Przykład 03

W tym przykładzie importowaliśmy funkcję testMod z jej modułu Doctest i używaliśmy funkcji Check (), aby sprawdzić, czy wynik mnożenia dwóch wartości jest zgodny z oczekiwaniami. W pierwszym wywołaniu funkcji przekazaliśmy 5 i 3 i oczekiwali 15 jako wynik mnożenia, podczas gdy w drugim wywołaniu funkcji przekazaliśmy znak M i całość 3, oczekując „MMM” jako wyniku mnożenia.

Wynik mnożenia „m*r” zostałby zwrócony do funkcji wywołujących main (). Funkcja main () wywołuje jedynie funkcję testmoda do wykonania 2 testów. Ten program jest już ukończony i gotowy do wykonania. Szczegółowy kod tego przykładu jest widoczny na zrzucie ekranu.

Po wykonaniu mamy te same wartości dla obu wyników mnożenia, jak wynik oczekiwany, i.mi. 15 i „MMM”. W takim przypadku żaden przypadek testowy nie został nie powiódł, ja.mi. Oba testy są przekazywane.

Wniosek

To wszystko o zastosowaniu pakietu Pythona w naszych kodach do testowania programów. W tym celu wypróbowaliśmy trzy różne przykłady, aby porównać wynikową wartość z oczekiwaną wartością funkcji, przyjmując niektóre argumenty. Wszystkie trzy przykłady są proste i łatwe do zrobienia na narzędziu Spyder 3 i możesz łatwo nauczyć się Doctest, ćwicząc.