Mam problem z nosem. Chcę uruchomić testy w katalogu testów, ale nie chcę, aby nos zmienił katalog roboczy. Jest tak, ponieważ używam importów względnych w mojej bibliotece i samych unittestów.
Najpierw struktura katalogów:
app_dir
app.py
library_dir
tests_dir
test_1.py
test_2.py
Obecnie przeprowadzam takie testy z poziomu app_dir
informator:
python -m unittest discover -s library_dir.tests_dir
To działa dobrze.
Teraz chciałbym to zrobić za pomocą nosa (testy nosa).
Kiedy próbuję, otrzymuję następujące informacje:
nosetests library_dir.tests_dir --collect-only -vv
Failure: SystemError (Parent module "" not loaded, cannot perform relative import) ... ok
Failure: SystemError (Parent module "" not loaded, cannot perform relative import) ... ok
Już widziałem podobne pytania na SO(jest ich wiele), a jedną z sugestii tego problemu, którą widzę, jest usunięcie względnego importu z samego najmniejszego, ale podoba mi się ten wzór. Dodatkowo, jeśli zmienię na import bezwzględny, dostanę
(No module named "<the_module_under_test")
Czy jest jakiś sposób na znalezienie przez nos testów z katalogu (np. Co -w
opcja zapewnia ALE utrzymując katalog roboczy taki sam jak w terminalu, który wywołał nos?
Odpowiedzi:
0 dla odpowiedzi № 1Ups, wygląda na to, że wszystko, co musiałem zrobić, to dodać __init__.py
do biblioteki i katalogu testów podkatalogów. Pracowałem nad założeniem, że nos będzie działał zgodnie z oczekiwaniami z PEP 420
Zablokować cytat PEP 420: Pakiety niejawnej przestrzeni nazw
Natywne wsparcie dla katalogów pakietów, które nie wymagają w tymPliki znaczników .py i mogą automatycznie obejmować wiele segmentów ścieżki (inspirowane różnymi podejściami stron trzecich do pakietów przestrzeni nazw, jak opisano w PEP 420)