foo
to projekt Pythona z głębokim zagnieżdżaniem katalogów, w tym ~ 30 unittest
plików w różnych podkatalogach. W ciągu foo
„s setup.py
, mam added a custom "test" command wewnętrznie działaPodawanie argumentów (dla argparse) z unittest discover
python -m unittest discover foo '*test.py'
pamiętać, że ta wykorzystuje tryb unittest
's discovery.
Ponieważ niektóre testy są bardzo powolne, ostatnio zdecydowałem, że testy powinny mieć "poziomy". Odpowiedź na this question wyjaśniła bardzo dobrze, jak uzyskać unittest
i argparse
, aby dobrze współpracować ze sobą. Więc teraz mogę uruchomić indywidualne unittest plik, powiedzmy foo/bar/_bar_test.py
z
python foo/bar/_bar_test.py --level=3
i tylko poziom-3 testy są prowadzone.
Problem polega na tym, że nie mogę dowiedzieć się, jak przekazać niestandardowe flagi (w tym przypadku „--level = 3” Wykorzystanie odkryć wszystko staram się nie powiedzie, np.
$ python -m unittest discover --level=3 foo '*test.py'
Usage: python -m unittest discover [options]
python -m unittest discover: error: no such option: --level
$ python -m --level=3 unittest discover foo '*test.py'
/usr/bin/python: No module named --level=3
Jak można mijam --level=3
do indywidualnych unittests? Jeśli to możliwe, chciałbym uniknąć dzielenia testy inny szczebla do różnych plików.
Bounty Edycja rozwiązanie
wstępnie bounty (fine) sugeruje zastosowanie systemu ENVIRO Zmienne n. To nie jest złe, ale szukam czegoś czystszego.
Zmiana testy biegacz wielokrotnego pliku (tj python -m unittest odkryć foo „* test.py”) na coś innego jest w porządku, tak długo, jak:
- Umożliwia generowanie raportu dla pojedynczego wielokrotne archiwizowanie plików.
- Może w pewien sposób obsługiwać wiele poziomów testowych (przy użyciu techniki w pytaniu lub przy użyciu innego mechanizmu).
Więc, dziękuję za odpowiedź, ale nie mogłem się zorientować, czy pozwala to na coś takiego, jak "odkryj" możliwość przejrzenia wszystkich plików w katalogu, a następnie wygeneruje pojedynczy raport dla wszystkich z nich. –
Używa 'unittest' do wykonania wszystkich testów. Tak, zapewnia on te same raporty co 'unittest'. Przykłady w mojej odpowiedzi wykorzystują flagę -v (verbose), aby anulować, aby podać szczegóły dotyczące wszystkich testów, w tym te, które zostały pominięte, ponieważ poziom testu był zbyt niski. – RootTwo
Ah, widzę - interesujące. Dzięki za odpowiedź - przyjrzymy się jej jeszcze raz. Doceniony! –