tl.testing poskytuje různé nástroje, které mohou být použity při psaní testů. & Nbsp; Je kompatibilní s Python verze 2.6 a 2.7.
Pískoviště adresářů a souborů
Při testování kódu, který upravuje adresářů a souborů, je vhodné, aby bylo možné vytvořit a prohlédnout ukázkové strom adresářů a souborů snadno. Modul tl.testing.fs poskytuje podporu pro vytváření strom z textový popis, výpis se ve stejném formátu a vyčistit po sobě.
Při testu doc, tato zařízení mohou být použity takhle vytvořit a uvést adresář, soubor a symbolický odkaz:
>>> z tl.testing.fs dovozu new_sandbox, ls
>>> New_sandbox ("" "
... D foo
... F foo / bar asdf
... L Baz -> foo / bar
... "" ")
>>> (ls)
l Baz -> foo / bar
d foo
f foo / bar asdf
Podívejte se na fs.txt soubor našel se zdrojovým kódem pro další rady, včetně toho, jak nastavit a strhnout zkoušek za použití systému souborů karantény.
Instalace splatné na požádání scripts
Některé funkce jeden by mohl chtít vyzkoušet využívá externích programů, jako je pager nebo textovém editoru. Tl.testing.script modul poskytuje nástroje, které nainstalovat jednoduché falešné skripty v místech, kde kód být zkoušen, bude je najít. Berou řetězec kód v jazyce Python a vytvořit souhrnný skript, který nastaví cestu Python, aby odpovídala testu a spustí kód.
To je, jak by mohl být takový falešný script použit v testu, doc:
>>> Z tl.testing.script dovozu nainstalovat
>>> Cesta_skriptu = nainstalovat ("tisk" jednoduchý skript. ")
>>> Print open (cesta_skriptu) .read ()
#! ...
import sys
sys.path [:] = [...]
print "jednoduchý skript."
>>> Import podproces
>>> Sub = subprocess.Popen (cesta_skriptu, shell = True, stdout = subprocess.PIPE)
>>> Stdout, stderr = sub.communicate ()
>>> Print stdout
Jednoduchý skript.
Podívejte se na skript.txt soubor našel se zdrojovým kódem pro další možnosti, jak nainstalovat a přístup k falešně skripty, jakož i jak se strhnout testech na falešné skripty.
Doc-testování grafický obsah KÁHIRA povrchů
I když je přímočarý porovnat obsah dvou KÁHIRA povrchů v Pythonu, manipulace grafiky je mimo doc testů. Nicméně, balíček Manuel může být použit k extrakci obecnější testovací případy z textového dokumentu, přičemž k jejich styku s doc testy přirozeným způsobem.
Tl.testing.cairo modul poskytuje továrnu testovací sada, která používá Manuel provést grafické testy formulované jako restrukturalizovat-textová čísla. Titulek takový číslo má být doslovný Python výraz, jehož hodnota je cairo povrch, a jeho obraz se použije jako testovací očekávání.
Toto je, jak může být povrch ve srovnání s očekávaným obrázkům v testu doc:
>>> Import cairo
>>> Z pkg_resources import resource_filename
>>> Image = resource_filename ("tl.testing", "testimages / correct.png")
.. :: Postava TL / testing / testimages / correct.png
& Nbsp; `` cairo.ImageSurface.create_from_png (image) ``
Podívejte se na cairo.txt soubor našel se zdrojovým kódem pro další rady a dokumentaci možného testovací výstup.
Práce s nití v testovacím kódu
Standardní TestCase třída neshromažďuje chyby a selhání, k nimž došlo v další témata, než hlavní. Tl.testing.thread modul poskytuje nitě třídy a třídy ThreadAwareTestCase dovolit jen to, že stejně jako některé další vymoženosti pro testy, které se zabývají závity: zabránit očekávané neošetřené výjimky v závitech informace vytištěna s testovací výstup, nitě hlášení po sobě zanechal testem, běžící kód démon nití, spojovací nitě a počítání závity začaly v průběhu zkoušky času spuštění:
>>> Time import
>>> Import tl.testing.thread
>>> Třída SampleTest (tl.testing.thread.ThreadAwareTestCase):
...
... Def test_error_in_thread_should_be_reported (self):
... S tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (lambda: 1/0)
...
... DEF test_active_count_should_count_only_new_threads (vlastní):
... S 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))
================================================== ====================
ERROR: test_error_in_thread_should_be_reported (__builtin __ SampleTest.)
-------------------------------------------------- --------------------
TraceBack (poslední hovor poslední):
& Nbsp; ...
ZeroDivisionError: integer dělení nebo modulo nulou
-------------------------------------------------- --------------------
Ran 2 testy v N.NNNs
FAILED (errors = 1)
Viz soubor thread.txt nalezen se zdrojovým kódem pro další podrobnosti třídy ThreadAwareTestCase.
Výstavba sérií zkoušek, které používají Manuel
Manuel poskytuje některé výkonné funkce, kromě standardních doctesty Manuel testovací sady jsou nastaveny mírně odlišně od těch běžných. Tl.testing.doctest modul implementuje DocFileSuite továrnu, který může být použit jako standardní, ale vytvoří testovací sadu pomocí Manuel a umožňuje některé další nastavení týkající se Manuel, mezi nimi i schopnost interpretovat poznámky pod čarou, které používají třeba provést pomocí zastaralé zope.testing.doctest:
>>> Sample_txt = write ('sample.txt', "" "
... [#footnote] _
... >>> X
... 1
...
... .. [#footnote]
... >>> X = 1
... "" ")
>>> Z tl.testing.doctest dovozu DocFileSuite
>>> Run (DocFileSuite (sample_txt, poznámky pod čarou = True))
-------------------------------------------------- --------------------
Ran 1 test N.NNNs
OK
>>> Sample_txt = write ('sample.txt', "" "
... .. Code-block :: python
... X = 1
...
... >>> X
... 1
... "" ")
>>> Import manuel.codeblock
>>> Run (DocFileSuite (sample_txt, Manuel = manuel.codeblock.Manuel ()))
-------------------------------------------------- --------------------
Ran 1 test N.NNNs
OK
Požadavky na :
- Python
Komentáře nebyl nalezen