pytest-time-out is een plugin voor py.test die tests zullen na een bepaalde time-out & nbsp;. Daarbij krijg je een stack dump van alle onderwerpen die draait op de tijd te krijgen. Dit is handig wanneer bijv. uitvoeren van tests onder een continue integratie (CI) server.
Gebruik
Installeren via:
pip pytest-time-out te installeren
en in staat dan de plugin, ofwel vanaf de opdrachtregel:
py.test -p timeout
of meer gemakshalve vanuit de test module of conftest.py:
pytest_plugins = 'time-out'
U kunt de time-out te veranderen met behulp van de --timeout parameter die de time-out in seconden zet.
Hoe het werkt
Deze plugin werkt op twee manieren. Als het systeem ondersteunt de SIGALRM signaal een alarm zal worden gepland wanneer de tests begint en uitgeschakeld wanneer het eindigt. Als het alarm afgaat tijdens de test het signaal behandelaar zal gebruiken pytest.fail () om de test te onderbreken na de stack van een andere rode draden naar stderr te hebben gedumpt.
Als het systeem niet ondersteunt SIGALRM of de --nosigalrm optie werd gebruikt dan zal een thread timer plaats daarvan worden gebruikt. Eens te meer, indien deze timer niet wordt geannuleerd voordat het verloopt zal de stack van alle discussies dumpen om stderr vóór beëindiging van de gehele py.test proces met behulp van os._exit (1).
Het nadeel van de SIGALRM methode is dat het signaal wordt gebruikt door het toetsingskader. Als dit signaal wordt gebruikt door de code te testen moet u de --nosigalrm optie te gebruiken. De beperking van de draad timer is echter de extra overhead van het creëren van een thread voor elke uitgevoerde testen en het feit dat na een time-out het hele proces wordt gestopt en er geen verdere tests worden uitgevoerd.
Wat is nieuwe in deze release:.
- Toegevoegd de PYTEST_TIMEOUT omgevingsvariabele als een manier om het opgeven van de time-out (sluit kwestie # 2)
- Meer flexibele marker argument parsing:. U kunt nu de methode te specificeren met behulp van een positionele argument
- De plugin is nu standaard ingeschakeld. Er is niet langer een noodzaak om timeout = 0 opgeven in het configuratiebestand of op de opdrachtregel gewoon zo dat een marker zou werken.
Wat is nieuw in versie 0.2:
- Voeg een marker om de time-delay te wijzigen met behulp van eenpytest .timeout (N) syntax, dankzij Laurant Brack voor de eerste code.
- Laat de timeout marker om de time-out te selecteren met behulp van de methode trefwoord argument.
- De naam van het --nosigalrm optie om = draad naar toekomstvaste ondersteuning --method voor eventlet en gevent. Met dank aan Ronny Pfannschmidt voor de hint.
- Voeg timeout en timeout_method items om het configuratiebestand, zodat u kunt inschakelen en configureren van de plugin met behulp van de ini file. Met dank aan Holger Krekel en Ronny Pfannschmidt voor de hints.
- Getest (en vast) voor python 2.6, 2.7 en 3.2.
Eisen
- Python
- py.test
Reacties niet gevonden