/ / python nose nie zmienia ścieżki katalogu roboczego - python, testowanie jednostkowe, nose

Python nose nie zmienia ścieżki katalogu roboczego - python, testowanie jednostkowe, nos

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 № 1

Ups, 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)