tl.testing giver forskellige hjælpeprogrammer, der kan bruges, når du skriver tests. & Nbsp; Det er kompatibel med Python-versioner 2.6 og 2.7.
Sandkasser af biblioteker og filer
Ved test kode, der ændrer mapper og filer, er det nyttigt at være i stand til at skabe og inspicere en stikprøve træ mapper og filer nemt. Den tl.testing.fs Modulet giver støtte til at skabe et træ fra en beskrivelse, at opføre den i samme format og rydde op efter sig selv.
I en doc test, kan disse faciliteter anvendes på denne måde at skabe og opføre en mappe, en fil og et symbolsk link:
>>> fra 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 fundet med kildekoden for yderligere rådgivning, herunder hvordan at oprette og rive ned forsøg med filsystem sandkasser.
Installation konverterbare scripts
Nogle funktioner man måske ønsker at teste gør brug af eksterne programmer, såsom en personsøger eller en teksteditor. Den tl.testing.script modul giver forsyningsselskaber, der installerer simple mock scripts på steder, hvor den kode, der skal testes, vil finde dem. De tager en streng af Python kode og oprette en wrapper script, der sætter Python vej til at matche det af testen og kører koden.
Dette er, hvordan sådan en mock script kan anvendes i en doc test:
>>> Fra tl.testing.script import installere
>>> Script_path = installere ("print" et simpelt script '. ")
>>> Print åben (script_path) .Læs ()
#! ...
import- sys
sys.path [:] = [...]
print 'et simpelt script. «
>>> Import delproces
>>> Sub = subprocess.Popen (script_path, shell = True, stdout = subprocess.PIPE)
>>> Stdout, stderr = sub.communicate ()
>>> Print stdout
En simpel script.
Se filen script.txt fundet med kildekoden til yderligere muligheder, hvordan du installerer og få adgang mock scripts samt hvordan at rive ned forsøg med mock scripts.
Doc-test af grafisk indhold for Cairo overflader
Selv om det er ligetil at sammenligne indholdet af to cairo overflader i Python kode, håndtering grafik er ud doc tests. Imidlertid kan manuel pakke bruges til at udtrække mere generelle testcases fra et tekstdokument, samtidig med at blande dem med doc tests på en naturlig måde.
Den tl.testing.cairo modul giver en test suite fabrik, der bruger manuel at udføre grafiske tests formuleret som omstruktureret-text tal. Billedteksten af et sådant tal formodes at være en bogstavelig Python udtryk, hvis værdi er en cairo overflade, og dens image bruges som test forventning.
Det er sådan en overflade kan sammenlignes med en forventet billede i en doc test:
>>> Import cairo
>>> Fra pkg_resources import resource_filename
>>> Image = resource_filename (»tl.testing ',' testimages / correct.png ')
.. Tal :: tl / afprøvning / testimages / correct.png
& Nbsp; `` cairo.ImageSurface.create_from_png (billede) ``
Se filen cairo.txt fundet med kildekoden for yderligere rådgivning og dokumentation af den mulige test output.
Arbejde med tråde i test-kode
Standarden testcase klasse indsamler ikke fejl og mangler, der fandt sted i andre tråde end den vigtigste. Den tl.testing.thread modul giver tråd klasser og en ThreadAwareTestCase klasse til at tillade netop det, samt nogle andre bekvemmeligheder for test, der beskæftiger sig med tråde: forebyggelse forventede unhandled undtagelser i tråde fra at blive udskrevet med test output, rapportering tråde efterladt ved en test, der kører koden i en dæmon tråd, sammenføjning tråde og tælle emner startet under testens Spilletid:
>>> Import tid
>>> Import tl.testing.thread
>>> Klasse SampleTest (tl.testing.thread.ThreadAwareTestCase):
...
... Def test_error_in_thread_should_be_reported (selv-):
... Med tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (lambda: 1/0)
...
... Def test_active_count_should_count_only_new_threads (selv-):
... 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))
================================================== ====================
FEJL: test_error_in_thread_should_be_reported (__builtin __ SampleTest.)
-------------------------------------------------- --------------------
Tilbagesporingstællingen (seneste opkald sidste):
& Nbsp; ...
ZeroDivisionError: heltalsdivision eller modulo med nul
-------------------------------------------------- --------------------
Ran 2 prøver i N.NNNs
FAILED (fejl = 1)
Se filen thread.txt fundet med kildekoden til yderligere oplysninger om ThreadAwareTestCase klasse.
Konstruktion test suiter, der bruger manuel
Da Manuel giver nogle kraftfulde funktioner i tillæg til standard doctests er manuel test suiter oprettet lidt anderledes end standard dem. Den tl.testing.doctest modul implementerer en DocFileSuite fabrik, der kan bruges som standard en, men skaber en test suite hjælp manuel og tillader nogle ekstra konfiguration relateret til manuel, blandt dem den evne til at fortolke fodnoter, der bruges til at ske ved hjælp af frarådet zope.testing.doctest:
>>> Sample_txt = write (»sample.txt", "" "
... [#footnote] _
... >>> X
... 1
...
... .. [#footnote]
... >>> X = 1
... "" ")
>>> Fra tl.testing.doctest import DocFileSuite
>>> Run (DocFileSuite (sample_txt, fodnoter = true))
-------------------------------------------------- --------------------
Ran 1 test i N.NNNs
OK
>>> Sample_txt = write (»sample.txt", "" "
... .. Kode-blok :: 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 ikke fundet