pytest-timeout er et plugin til py.test som ophører tests efter en vis timeout. & Nbsp; Når du gør, så du får en stak dump af alle emner, der kører på det tidspunkt. Dette er nyttigt, når f.eks kører tests under en server løbende integration (CI).
Anvendelse
Installer via:
pip installere pytest-timeout
og derefter aktivere plugin, enten fra kommandolinjen:
py.test -p timeout
eller mere bekvemt inde fra testmodulet eller conftest.py:
pytest_plugins = 'timeout'
Du kan ændre timeout ved hjælp af --timeout parameter, der sætter timeout i sekunder.
Sådan fungerer det
Dette plugin virker på en af to måder. Hvis systemet understøtter SIGALRM signal en alarm vil blive planlagt Når testene starter og annulleres, når den er færdig. Hvis alarmen udløber under testen signalet handleren bruger pytest.fail () for at afbryde testen efter at have dumpet stakken af andre tråde til stderr.
Hvis systemet ikke understøtter SIGALRM eller --nosigalrm mulighed blev brugt så en timer tråd vil blive brugt i stedet. Endnu en gang, hvis denne timer ikke annulleres, før den udløber, vil dumpe stakken af alle emner til stderr, før afslutning af hele py.test proces med os._exit (1).
Ulempen ved SIGALRM fremgangsmåde er, at signalet anvendes ved testen rammer. Hvis dette signal anvendes ved koden under test, du bliver nødt til at bruge --nosigalrm mulighed. Begrænsningen af timeren tråd dog er den ekstra overhead af at skabe en tråd for hver udført test, og det faktum, at hele processen efter en timeout er stoppet, og ingen yderligere tests udføres.
Hvad er ny i denne udgivelse:.
- Tilføjet variablen PYTEST_TIMEOUT miljø som en måde at angive timeout (lukker spørgsmål # 2)
- Mere fleksibel markør argument parsing:. Du kan nu angive metoden i en positionel argument
- Dette plugin er nu aktiveret som standard. Der er ikke længere behov for at specificere timeout = 0 i konfigurationsfilen eller på kommandolinjen simpelthen så, at en markør ville arbejde.
Hvad er nyt i version 0.2:
- Tilføj en markør for at ændre timeout forsinkelse ved hjælp af enpytest .timeout (N) syntaks, takket være Laurant Brack for den indledende kode.
- Lad timeout markør for at vælge timeout-metoden ved hjælp af metoden nøgleordet argument.
- Omdøb --nosigalrm mulighed for at --method = tråd til fremtidssikret støtte til eventlet og gevent. Tak til Ronny Pfannschmidt for tippet.
- Tilføj timeout og timeout_method elementer til indstillingsfilen, så du kan aktivere og konfigurere plugin hjælp ini-filen. Tak til Holger Krekel og Ronny Pfannschmidt for hints.
- Testet (og fast) for python 2.6, 2.7 og 3.2.
Krav :
- Python
- py.test
Kommentarer ikke fundet