2011-07-01 32 views
8

Chcę, aby moje testy zakończyły się niepowodzeniem, jeśli trwają dłużej niż pewien określony czas (powiedzmy 500ms), ponieważ jest to do bani, gdy ładuje się nieco powolny test i nagle masz duże opóźnienie za każdym razem uruchamiasz pakiet testowy. Czy są jakieś wtyczki lub coś dla Nosa, które już to robią?Dokonywanie Nose fail slow test

Odpowiedz

7

Z całym szacunkiem sugeruję, że zmiana znaczenia słowa "zepsuty" jest złym pomysłem.

Znaczenie nieudanego/"czerwonego" testu nie powinno być niczym innym niż "ta funkcja jest zepsuta". Aby zrobić cokolwiek innego, ryzyko rozcieńczenia wartości testów.

Jeśli zaimplementować to w przyszłym tygodniu, a następnie kilka prób nie uda, będzie to wskaźnik, który

  • Twoje testy działa powoli?
  • Kod jest zepsuty?
  • Obie powyższe w tym samym czasie?

I sugerują, że byłoby lepiej, aby zebrać MI z procesu kompilacji i monitorować je w celu wykrywania powolnych testy budową, ale niech czerwony oznacza „złamane funkcjonalność”, a następnie „zepsuty funkcjonalność i/lub powolny testu. "

+1

Dzięki za odpowiedź! To ma sens. Jakieś sugestie dotyczące generowania raportu o czasie uruchamiania testów testowych? –

+0

@ThomasParslow Używam funkcji [stopera pinokia] (http://darcs.idyll.org/~t/projects/pinocchio/doc/#id12) do mierzenia czasów testów. Tworzy pikle, które można następnie przetwarzać za pomocą prostego skryptu Pythona. –

11

W przypadkach, w których ważne jest, gdy czas (na przykład w czasie rzeczywistym wymagania):

http://nose.readthedocs.org/en/latest/testing_tools.html

nose.tools.timed(limit)

testu musi zakończyć w określonym terminie przejść.

Przykład użycia:

from nose.tools import timed 
@timed(.1) 
def test_that_fails(): 
    time.sleep(.2) 
+1

Byłoby miło, gdyby działało – Jack