pytest-timeout este un plugin pentru py.test care va termina testele după o anumită perioadă, & nbsp;. Când face acest lucru, veți primi un depozit stivă de toate subiectele care rulează la momentul respectiv. Acest lucru este util atunci când de exemplu rulează teste sub un server de integrare continuă (CI).
Utilizare
Instalare prin:
Pip instala pytest-timeout
și apoi activați plugin-ul, fie de la linia de comandă:
py.test -p timeout
sau mai convenabil din cadrul modulului de testare sau conftest.py:
pytest_plugins = 'timeout'
Puteți schimba timeout folosind parametrul --timeout care stabilește timeout în câteva secunde.
Cum funcționează
Acest plugin functioneaza in doua moduri. Dacă sistemul suportă semnalul de SIGALRM o alarmă va fi programat atunci când testele începe și anulat atunci când anunță. Dacă alarma expiră în timpul testului de tratare a semnalului va folosi pytest.fail () pentru a întrerupe încercării, după ce a părăsit topul de orice alte fire care rulează la stderr.
Dacă sistemul nu are suport SIGALRM sau opțiunea --nosigalrm a fost folosit apoi un fir cronometru va fi folosit în loc. Încă o dată, dacă acest temporizator nu se anulează înainte de a expira, va arunca teancul de toate subiectele pe masura înainte de încheiere a întregului proces py.test folosind os._exit (1).
Dezavantajul metodei SIGALRM este că semnalul este utilizat în cadrul de testare. Dacă acest semnal este folosit de codul testat va trebui să utilizați opțiunea --nosigalrm. Limitarea firului timer toate acestea, este regia suplimentar de a crea un fir pentru fiecare încercare executat și de faptul că, după o pauză întregul proces este oprit și nu teste suplimentare sunt executate.
Ce este nou în această versiune:.
- Adaugata variabila de mediu PYTEST_TIMEOUT ca o modalitate de a specifica timeout (închide problema # 2)
- Mai multă flexibilitate la analizarea argument îi trimită:. Puteți specifica acum metoda, folosind un argument pozițională
- plugin este acum activată în mod implicit. Nu mai este necesar să se precizeze timeout = 0 în fișierul de configurare sau în linia de comandă, pur și simplu, astfel încât un marker ar funcționa.
Ce este nou în versiunea 0,2:
- Adăugați un marker pentru a modifica termenul de expirare, folosind unpytest .timeout (N) sintaxa, datorită Laurant Brack pentru codul inițial.
- Permiteți marcatorul timeout pentru a selecta metoda timeout folosind argumentul metodei de cuvinte cheie.
- Redenumiți opțiunea --nosigalrm a --method = fir de viitor sprijin dovadă de eventlet și gevent. Vă mulțumim pentru Ronny Pfannschmidt pentru indiciu.
- Adăugarea elementelor de timeout și timeout_method la fișierul de configurare, astfel încât să puteți activa și configura plugin folosind fișierul ini. Datorită Holger Krekel și Ronny Pfannschmidt pentru indicii.
- Testat (și fixe) pentru python 2.6, 2.7 și 3.2.
Cerințe :
- Python
- py.test
Comentariile nu a fost găsit