tl.testing ger olika verktyg som kan användas när du skriver tester. & Nbsp; Den är kompatibel med Python-version 2.6 och 2.7.
Sandlådor av kataloger och filer
Vid testning kod som ändrar kataloger och filer, är det bra att kunna skapa och inspektera en provträd av kataloger och filer enkelt. Den tl.testing.fs modulen ger stöd för att skapa ett träd från en textbeskrivning, listar den i samma format och städa upp efter sig.
I en doc-test, kan dessa anläggningar används såhär för att skapa och lista en katalog, en fil och en symbolisk länk:
>>> från tl.testing.fs import 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
Se filen fs.txt hittas med källkoden för ytterligare råd, bland annat hur man ställer in och riva tester med filsystemsandlådor.
Installera inlösbara script
Vissa funktioner man kanske vill testa använder externa program såsom en personsökare eller en textredigerare. Den tl.testing.script modulen ger verktyg som installerar enkla håna skript på platser där koden som ska testas kommer att hitta dem. De tar en sträng av Python-kod och skapa en wrapper skript som sätter Python banan så att de matchar testet och kör koden.
Detta är hur en sådan falsk skript kan användas i en doc-test:
>>> Från tl.testing.script import installera
>>> Script_path = installera ("print" Ett enkelt skript. '")
>>> Trycket öppna (script_path) .Läs ()
#! ...
import sys
sys.path [:] = [...]
print "Ett enkelt skript."
>>> Import delprocess
>>> Sub = subprocess.Popen (script_path, shell = Sant, stdout = subprocess.PIPE)
>>> Stdout, stderr = sub.communicate ()
>>> Utskrifts stdout
Ett enkelt skript.
Se filen script.txt hittas med källkoden för ytterligare möjligheter hur man installerar och tillgång mock manus samt hur man riva ner tester med mock skript.
Doc-testa grafiskt innehåll i cairo ytor
Även om det är rättfram att jämföra innehållet i två cairo ytor i Python-kod, hantering grafiken är bortom doc tester. Däremot kan manuel paketet användas för att utvinna mer generella testfall från ett textdokument samtidigt att blanda dem med doc tester på ett naturligt sätt.
Den tl.testing.cairo modulen ger en testsvit fabrik som använder manuel att utföra grafiska tester formulerade som omstrukturerats-textsiffror. Rubriken på en sådan siffra är tänkt att vara en bokstavlig Python uttryck vars värde är en kairo yta, och dess bild används som test förväntan.
Detta är hur en yta kan jämföras med en förväntad bild i en doc-test:
>>> Import cairo
>>> Från pkg_resources import resource_filename
>>> Image = resource_filename ('tl.testing', 'testimages / correct.png')
.. Siffra :: tl / testning / testimages / correct.png
& Nbsp; `` cairo.ImageSurface.create_from_png (bild) ``
Se filen cairo.txt hittas med källkoden för ytterligare råd och dokumentation av den möjliga testutgången.
Arbeta med gängor i test kod
Standarden testfall klassen samlar inte in fel och brister som förekommit i andra trådar än den viktigaste. Den tl.testing.thread modul ger gängklasser och en ThreadAwareTestCase klass för att möjliggöra just det, liksom en del andra bekvämligheter för tester som behandlar ämnen: förebygga förväntade ohanterade undantag i trådarna från att tryckas med testutgång, rapporterar trådar kälken genom ett test, kör kod i en daemon tråd, sammanfogning gängor och räkna ämnen startade under testets körning:
>>> Import tid
>>> Import tl.testing.thread
>>> Klass SampleTest (tl.testing.thread.ThreadAwareTestCase):
...
... Def test_error_in_thread_should_be_reported (själv):
... Med tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (lambda: 1/0)
...
... Def test_active_count_should_count_only_new_threads (egen):
... Med 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))
================================================== ====================
FEL: test_error_in_thread_should_be_reported (__builtin __ SampleTest.)
-------------------------------------------------- --------------------
Spårnings (senaste samtalet sist):
& Nbsp; ...
ZeroDivisionError: heltalsdivision eller modulo med noll
-------------------------------------------------- --------------------
Ran 2 tester i N.NNNs
FAILED (fel = 1)
Se filen thread.txt fann med källkoden för ytterligare detaljer om ThreadAwareTestCase klassen.
Konstruera test som använder manuel
Som manuel ger några kraftfulla funktioner utöver standard doctests är manuel testsviter inrättat något annorlunda än vanliga. Den tl.testing.doctest modulen implementerar en DocFileSuite fabrik som kan användas som standard en men skapar en testsvit med Manuel och tillåter viss ytterligare konfiguration relaterad till manuel, bland dem förmågan att tolka fotnoter som brukade göras med föråldrad zope.testing.doctest:
>>> Sample_txt = write ('sample.txt "," ""
... [#footnote] _
... >>> X
... 1
...
... .. [#footnote]
... >>> X = 1
... "" ")
>>> Från tl.testing.doctest import DocFileSuite
>>> Kör (DocFileSuite (sample_txt, fotnoter = True))
-------------------------------------------------- --------------------
Ran 1 test i N.NNNs
OK
>>> Sample_txt = write ('sample.txt "," ""
... .. Code-blocket :: python
... X = 1
...
... >>> X
... 1
... "" ")
>>> Import manuel.codeblock
>>> Run (DocFileSuite (sample_txt, manuel = manuel.codeblock.Manuel ()))
-------------------------------------------------- --------------------
Ran 1 test i N.NNNs
OK
Krav :
- Python
Kommentarer hittades inte