2012-04-28 17 views
6

Eksperymentuję więc z wprowadzeniem testów jednostkowych selenium w django 1.4 w kilku projektach, nad którymi pracuję.Najlepsza praktyka organizowania testów selenu i testów jednostkowych

Standardowy sposób uruchamiania testów jednostkowych polega po prostu na wykonaniu ./manage.py test i używam django-ignoretests, aby wykluczyć określone aplikacje django, których nie chcę testować (w razie potrzeby).

Czy istnieje jednak sposób na skonfigurowanie mojego projektu, aby móc przeprowadzić tylko testy selenu, gdy chcę i mam ./manage.py test przeprowadzać tylko standardowe testy jednostkowe.

Jakie są najlepsze praktyki w zakresie segregowania i organizowania testów selenu i standardowych testów jednostkowych?

Odpowiedz

5

Mogłeś zawsze grupa wszystkie testy selenu pod jednym pakiecie myapp/selenium_tests/ (jak opisane tutaj https://stackoverflow.com/a/5160779/1138710 na przykład), a następnie uruchomić manage.py test myapp.selenium_tests i grupowe resztę badań przy powiedzieć myapp/other_tests.

W przeciwnym razie, jak sądzę można napisać zawodnik testowy, który sprawdza dla każdej klasy testu, czy pochodzi ona z LiveServerTestCase (patrz docs: https://docs.djangoproject.com/en/dev/topics/testing/#defining-a-test-runner)

+0

Ponieważ testy Selenium wydają się być funkcjonalne, staram się robić to samo, zachowując je w osobnej paczce, wraz z opcją ich pominięcia (http://stackoverflow.com/a/10743466/4281). Podoba mi się pomysł biegacza testowego, ale w niektórych przypadkach testy mogą nie być potomstwem LiveServerTestCase (co jest kolejnym problemem). –

5

Dla klas testowych w pytaniu, dodałem następujące dekorator:

from django.conf import settings 
@unittest.skipIf(getattr(settings,'SKIP_SELENIUM_TESTS', False), "Skipping Selenium tests") 

Następnie, aby pominąć te testy dodać do pliku ustawień: SKIP_SELENIUM_TESTS = True

To może być łatwo zawinięte do podklasy LiveServerTestCase lub prostego dekoratora . Gdybym miał to w więcej niż jednym miejscu, byłby już.

Powiązane problemy