tl.testing zapewnia różne narzędzia, które można wykorzystać podczas pisania testów. & Nbsp; Jest to zgodne z Pythona wersjach 2.6 i 2.7.
Piaskownice z katalogów i plików
Podczas testowania kodu, który modyfikuje pliki i katalogi, warto mieć możliwość łatwego tworzenia i sprawdzić przykładowe drzewo katalogów i plików. Moduł tl.testing.fs zapewnia wsparcie dla tworzenia drzewa z opisem tekstowym, wymieniając go w tym samym formacie i posprzątać po sobie.
W teście doc, urządzenia te mogą być używane tak, aby utworzyć i wystawić katalog, plik i link symboliczny:
>>> z tl.testing.fs importu new_sandbox, ls
>>> New_sandbox ("" "
Bla ... d
... F foo / bar asdf
... L baz -> foo / bar
... "" "),
>>> ls ()
l baz -> foo / bar
d foo
f foo / bar asdf
Zobacz fs.txt znaleziono pliku z kodem źródłowym dla dalszych porad, w tym jak skonfigurować i zburzyć testy przy użyciu systemu plików piaskownic.
Instalowanie skrypty wymagalnych
Niektóre funkcje mogą chcieć przetestować korzysta z zewnętrznych programów takich jak pager lub edytora tekstu. Moduł tl.testing.script zapewnia narzędzia, które instalują prostych skryptów makiety w miejscach, gdzie kod do przetestowania będzie je znaleźć. Biorą ciąg kodu Pythona i stworzyć skrypt opakowania, który wyznacza ścieżkę Python na zgodny z testów i działa kod.
Jest to, jak takie makiety można użyć skryptu w teście doc:
>>> Z tl.testing.script importu zainstalować
>>> Ścieżka_skryptu = instalacja ("print" prostego skryptu. ")
>>> Print otwarty (ścieżka_skryptu) .read ()
#! ...
import sys
sys.path [:] = [...]
print "prosty skrypt.
>>> Import podproces
>>> Sub = subprocess.Popen (ścieżka_skryptu, shell = True, stdout = subprocess.PIPE)
>>> Stdout, stderr = sub.communicate ()
>>> Print stdout
Prosty skrypt.
Zobacz script.txt znaleziono pliku z kodem źródłowym dla dalszych możliwości, jak zainstalować i dostępu mock skryptów, a także, jak burzyć testów przy użyciu skryptów makiety.
Doc-testowania graficznego treści powierzchni Kair
Choć jest prosta, aby porównać zawartość dwóch powierzchni Kairze w kodzie Pythona, obsługi grafiki jest poza testami doc. Jednakże opakowanie Manuel mogą być stosowane do wyodrębniania bardziej ogólnych przypadków testowych z dokumentu tekstowego pozwalając jednocześnie wymieszać je z testami doc w sposób naturalny.
Moduł tl.testing.cairo zapewnia fabrykę zestaw testów, które wykorzystuje do wykonywania testów Manuel graficznych formułowane jako figury restrukturyzacji tekstowych. Podpis takiego rysunku ma być dosłowne wyrażenie Pythona, którego wartość jest powierzchnia Kair, a jego wizerunek jest wykorzystywany jako oczekiwanie testu.
W ten sposób powierzchnia może być porównana do oczekiwanego obrazu w teście doc:
>>> Import Kair
>>> Z pkg_resources importu resource_filename
>>> Image = resource_filename ("tl.testing", "testimages / correct.png")
.. :: Tl postać / badania / testimages / correct.png
& Nbsp; `` cairo.ImageSurface.create_from_png (obraz) ``
Zobacz cairo.txt znaleziono pliku z kodem źródłowym do dalszych porad i dokumentacji ewentualnego wyjścia testowego.
Praca z wątków w procedurze badania
Średnia Klasa TestCase nie zbiera błędów i uchybień, które miały miejsce w innych wątków niż głównego. Moduł tl.testing.thread zapewnia zajęcia nici i klasy ThreadAwareTestCase aby tylko to, jak niektóre inne udogodnienia dla testów, które zajmują się wątków: zapobieganie oczekiwanych nieobsłużonych wyjątków w wątkach drukowane z wyjścia testowego, nici sprawozdawcze pozostawione przez test, uruchomiony kod w wątku demona, łączącą wątki i liczenia wątki rozpoczęte w czasie uruchomić test na:
>>> Czas na przywóz
>>> Import tl.testing.thread
>>> Klasy SampleTest (tl.testing.thread.ThreadAwareTestCase):
...
... Def test_error_in_thread_should_be_reported (self):
... Z tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (lambda: 1/0)
...
... Def test_active_count_should_count_only_new_threads (self):
... Z tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (lambda: time.sleep (0,1))
... Self.assertEqual (1, self.active_count ())
... Self.assertEqual (0 self.active_count ())
>>> Import unittest
>>> Run (unittest.makeSuite (SampleTest))
================================================== ====================
BŁĄD: test_error_in_thread_should_be_reported (__builtin __ SampleTest.)
-------------------------------------------------- --------------------
Traceback (najnowsze połączenie ostatni):
& Nbsp; ...
ZeroDivisionError: dzielenia całkowitego lub modulo przez zero
-------------------------------------------------- --------------------
Ran 2 testy w N.NNNs
FAILED (błędy = 1)
Zobacz plik thread.txt z kodem źródłowym dla dalszych szczegółów klasy ThreadAwareTestCase znaleźć.
Konstruowanie zestawów testów, które korzystają manuel
Jak Manuel zapewnia niektórych funkcji oprócz standardowych doctests, zestawy testów manuel są ustawione nieco inaczej niż te standardowe. Tl.testing.doctest moduł ma fabrykę DocFileSuite który może być używany jak standardowy jeden, ale tworzy zestaw testowy za pomocą Manuel i pozwala dodatkowej konfiguracji związanej z manuel, wśród nich umiejętność interpretacji przypisy, które kiedyś to zrobić za pomocą przestarzałe zope.testing.doctest:
>>> Sample_txt = write ("sample.txt" "" "
... [#footnote] _
... >>> X
... 1
...
... .. [#footnote]
... >>> X = 1
... "" "),
>>> Z tl.testing.doctest importu DocFileSuite
>>> Run (DocFileSuite (sample_txt, przypisy = true))
-------------------------------------------------- --------------------
Ran 1 badanie w N.NNNs
OK
>>> Sample_txt = write ("sample.txt" "" "
... .. :: Bloku kodu Pythona
... X = 1
...
... >>> X
... 1
... "" "),
>>> Import manuel.codeblock
>>> Run (DocFileSuite (sample_txt Manuel = manuel.codeblock.Manuel ()))
-------------------------------------------------- --------------------
Ran 1 badanie w N.NNNs
OK
Wymagania :
- Python
Komentarze nie znaleziono