Moduł Test::More

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Spis treści

  1. Wstęp
  2. Opis
  3. Dokumentacja

Wstęp

Test::More to moduł pozwalający na usprawnienie testowania skryptów. Jest kompatybilny wstecznie z modułem Test::Simple, tzn że można rozbudowywać skrypty testujące ze starych wykorzystujących moduł Test::Simple. Z tego względu pominięto w opisie tą samą funkcję testującą ok() , której opis znaleźć można na tej stronie w dziale Test::Simple. Poniżej opisane będą funkcje rozszerzające funkcjonalność modułu Test::More względem TEst::Simple. Jeżeli czytelnik nie zna jeszcze modułu Test::Simple to propunję najpierw przeczytać jego opracowanie.

Opis

Test::More oferuje kilka róznych sposobów porównywania wartości. Są to funkcje:

Funkcja is() może przyjmować dwa lub trzy argumenty, analogicznie jak ok(). Różnica pomiędzy funkcją is() a ok() polega na raportowaniu błędów. Funkcja is() zwraca więcej szczegółów w przypadku wystąpienia błędu: not ok 1 - Nono noo # Failed test 'Nono noo' # at test.pl line 6. # got: '1' # expected: '2' Innym podejściem do porównywania wartości jest metoda isnt() która jako parametry przyjmuje te same wartości: czyli pierwszy parametr to wartość w kontekście skalarnym rozróżniania jako prawda fałsz, nasepny parametr to wartość do której jest porównywany parametr pierwszy. Oraz trzeci - opcjonalny parametr zawierający tekst, który będzie wyświetlony w przypadku powodzenia testu. Funkcja ta sprawdza czy wartość jest różna od stałej. isnt(2+3 , 3,"dwa dodac trzy jest różne od trzech"); Ciekawą funckją do tworzenia testów jest funkcja cmp_ok(), która przyjmuje do czterech argumentów: cmp_ok($got,$operator,$expected,"Ok wynik pozytywny"); parametr $got to jakiś kod lub funkcja $operator przechowuje nam operator porównania. Zmienna $expected zawiera wartość oczekiwaną. Przykład użycia: cmp_ok(foo(),"<",10,"wynik foo mniejszy od 10"); cmp_ok(foo(),">",10,"Wynik foo większy od 10"); cmp_ok(foo(),"==",10,"Wyniik foo równy 10");
Przekazywanie operatora porówniania jako parametru umożliwia w prosty sposób dynamiczne tworzenie skryptów. Funkcja like() testuje zwracane wartości przypasowując je do wyrażeń regularnych, analogiczna jest funkcja unlike() z tym że testuje pod kątem nie dopasowania się do wyrażenia regularnego np:
like( $got, '/expected/', "tego właśnie oczekiwaliśmy" ); można wykorzystywać wyrażenia regularne łacznie z modyfikatoprami np" like( $got,'/expected/i',"tego właśnie oczekiwaliśmy.."); jest to równoważne funkcji ok( $got =~'/expected/i',"tego właśnie oczekiwaliśmy..");

can_ok() jest to funkcja która sprawdza czy dana klasa lub obiekt będący pierwszym parametrem posiada metody przekazane jako drugi parametr - kojarzy się z obiektową metodą can(); np: < can_ok( Modul::Moj::Wlasny, qw( jedz spij kochaj pracuj usmierc ), "No tak już te wszystkie metody zaimplementowano") ); ten kawałek kodu jest równoważny ok(Modul::Moj::Wlasny->can(jedz) && Modul::Moj::Wlasny->can(spij) && Modul::Moj::Wlasny->can(pracuj) && Modul::Moj::Wlasny->can(usmierc), "No tak już te wszystkie metody zaimplementowano" ); z tym że wszystkie te meotdy modułu Test::More od metody ok() modułu Test::Simple różni jeszcze fakt zwracania dokładniejszych inforamcji w razie niepowodzenia testu!

isa_ok sprawdza po jakich modułach dziedziczy nasz obiekt, klasa. Przykład użycia: isa_ok($czlowiek,qw(ssak zwierze_towarzyski,"Tak obiekt człowiek to ssak i w dodatku towrzyski");

Moduł Test::More zawiera jeszcze jedno "udoskonalenie" względem modułu Test::Simple - mianowicie obsługuje bloki SKIP i TODO

SKIP służy do pomijania fragmentu testu i używa się go tak: SKIP:{ skip "Nie ma kolorowego monitora", 2 unless $kolorowy_monitor; ok(koloruj_ekran($zielony)); ok(koloruj_text($zolty)); } Etykieta SKIP jest obowiązkowa i pozwala określić jaki fragment skryptu należy pominąć podczas testów. funkcji skip przekazuje się w parametrach kolejno: ilość testów do ominięcia oraz komunikat jaki będzie wyświtlany jako powód pominięcia testów. dla powyższego przykładu skrypt wypisze: ok 1 # skip Nie ma kolorowego monitora ok 2 # skip Nie ma kolorowegop monitora Etykieta TOTDO jest analogiczna do SKIP z tym że oznacza ona pominięte testy jako failed z informacją o tym iż są to testy pominięte ponieważ z jakichś powodów pominięte funkcje nie zostały jeszcze zaimplementowane. Jednak końcowy - całkowity wynik testu będzie pozytywny.

Dodatkowe informacje

Dokumentacja na CPAN

Autor modułu i kontakt do niego

Autor: Damian Karpiński

Email: plactostomus@wp.pl

Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.