2014-05-13 24 views
9

Ustawiam swoje środowisko badań nosa, ale nie wydaje mi się, aby limit czasu zadziałał prawidłowo. Chciałbym mieć czas na sekundę (powiedzmy 2) na każdym teście odkrytym przez nos.Limit czasu na testach z próbami w nosie

Próbowałem następujące:

nosetests --processes=-1 --process-timeout=2 

Działa to dobrze, ale zauważyłem, co następuje:

  • równolegle badania trwa dłużej za pomocą kilku prostych testami
  • Nos nie zgłasza powrotem, gdy upłynął limit czasu testu (a tym samym błąd)

Czy ktoś wie? jak mogę uzyskać taki czas oczekiwania na pracę? Wolałbym, aby działał bez równoległych testów, ale nie byłoby to problemem, dopóki otrzymam informację zwrotną, że upłynął limit czasu testu.

Odpowiedz

9

ja nie wiem, czy będzie to ułatwić Ci życie, ale nie ma podobną funkcjonalność w nose.tools że nie uda się na czas oczekiwania, i nie trzeba mieć równolegle badania w tym:

from nose.tools import timed 

@timed(2) 
def test_a(): 
    sleep(3) 

You może prawdopodobnie automatycznie udekorować wszystkie testy w module za pomocą skryptu/wtyczki, jeśli ręczne dodanie atrybutu jest problemem, ale ja osobiście wolę jasność nad magią.

Przeglądając źródło Lib/site-packages/nose/plugins/multiprocess.py wygląda na to, że opcja process-timeout jest używana do zarządzania "wiszącymi" podprocesami, które mogą uniemożliwić zakończenie testu.

+2

Działa zgodnie z oczekiwaniami, dzięki! Chociaż wolałbym opcję linii poleceń, aby ustawić limit czasu dla wszystkich testów, będę kontynuował to podejście. Pozwoli mi to ustawić limity czasu dla konkretnych funkcji, które powinny trwać dłużej niż inne. – JustMe

+3

Próbowałem tego i byłem nieszczęśliwy. Oto, co umieściłem w swoim kodzie: import nose.tools.timed # Ostrzeżenie, to nie robi się tak jak w reklamie, nie używaj, ta linia pozostała jako ostrzeżenie # nose.tools.timed nie ogranicza czasu test musi zostać uruchomiony, uruchamia test, a jeśli trwało to zbyt długo # wtedy podnosi TimeExpired(), nie zapewnia ani ograniczenia w czasie wykonywania, ani sposobu na wydłużenie czasu działania test, który trwa dłużej niż limit na test w całym nosie. Dlaczego ktoś miałby to kiedykolwiek używać? – Jim