2011-11-08 10 views
10

Próbuję uzyskać testy nosa, aby zidentyfikować moje testy, ale nie wykonuję żadnego z moich testów prawidłowo.Ktoś wie, jak działają nosetest -m, -i i -e?

Mam następującą strukturę plików

Project 
    +----Foo/ 
      +----__init__.py 
      +----bar.py 
    +----test/ 
      +----__init__.py 
      +----unit/ 
       +----__init__.py 
       +----bar_test.py 
      +----functional/ 
       +----__init__.py 
       +----foo_test.py 

ciągu bar_test.py

class BarTest(unittest.TestCase): 
    def bar_1_test(): 
     ... 

ciągu foo_test.py

class FooFTest.py 
    def foo_1_test(): 
     ... 

Korzystanie -m, -i, -e opcje testy nosowe

  • Jaki jest regex trzeba uruchomić tylko testy jednostkowe (pod jednostkę/testy w klasie BarTest)
  • Co to jest wyrażenie regularne muszę uruchomić tylko testy funkcjonalne (pod funkcjonalny/testy w klasie FooFTest)

próbowałem różnych kombinacji i nie wydaje się uzyskać nosetests robić co chcę konsekwentnie

Odpowiedz

6

Najprostszym sposobem uruchomić tylko testy pod Project/test/unit jest użycie --where. Na przykład:

nosetests --where=Project/test/unit 

Następnie użyj --match (-m) lub --exclude (-e), aby udoskonalić listę, jeśli to konieczne.

Jeśli nadal chcesz używać regex selektorów, prawdopodobnie można zrobić to w ten sposób (nie testowane):

nosetests --match='^Foo[\b_\./-])[Tt]est' 

Wykonanie tego skryptu z katalogu Project by uruchomić wszystkie testy, które zaczynają się od „Foo” i kończy się na "[Tt] est".

Co do zasady prawdopodobnie chcesz użyć albo --match lub , ale nie obu. Te parametry określają dla siebie wzór nazw funkcji :. Możesz zawęzić jeden z nich, używając --ignore-files, który oczywiście pozwala ignorować całe pliki.

+0

so --match i --exclude pasują tylko do metod testowych, a nie do nazwy klasy testowej? – sasker

+0

Ups. Dobry połów. Masz rację. Z dokumentów dla --match: "Pliki, katalogi, nazwy funkcji i nazwy klas pasujące do tego wyrażenia regularnego są uważane za testy." Więc możesz użyć --match, by zebrać wszystkie testy, a następnie użyj --exclude, aby zignorować te, które zawierają "pasek", na przykład. – Lemur

3

Biorąc pod uwagę strukturę katalogów, można łatwo uruchomić segmenty testów za pomocą opcji --exclude.

uruchamiać wszystkie testy:

nosetests Project 

badania Jednostka run:

nosetests Project -e functional 

uruchomić testy funkcjonalne:

nosetests Project -e unit 

Jeśli masz bardziej złożone potrzeby w zakresie wykonywania testów, zaleciłbym zaznaczenie testów i użycie the attrib package.

Powiązane problemy