tôi làm có cấu trúc dự án sauDjango py.test không tìm các cài đặt mô-đun
base
__init.py
settings
__init__.py
settings.py
tests
pytest.ini
test_module.py
My pytest.ini
trông như thế này:
[pytest]
#DJANGO_SETTINGS_MODULE =base.settings.settings
My test_module.py
trông như thế này:
def test_django():
from base.settings import settings as base_settings
from django.conf import settings as django_settings
assert 3==5
Khi tôi chạy bây giờ:
py.test
nó sẽ chạy hàng nhập không có vấn đề và sẽ gây ra lỗi tại assert 3==5
(như mong đợi). Điều này cho tôi biết rằng cơ sở nằm trên sys.path
và có thể nhập base.settings.settings
.
Bây giờ tôi thay đổi test_module.py
tới:
def test_django():
from base.settings import settings as base_settings
from django.conf import settings as django_settings
print django_settings.xxx
assert 3==5
Khi tôi bây giờ chạy:
py.test --ds=base.settings.settings
tôi nhận được lỗi:
ERROR: Could not import settings 'base.settings.settings' (Is it on sys.path?): No module named base.settings.settings.
Hiệu ứng tương tự khi tôi không thiết lập cài đặt thông qua dòng lệnh, nhưng thông qua tệp pytest.ini
(bằng cách bỏ ghi chú dòng).
Dường như tôi bỏ lỡ điều gì đó ở đây ???
py.test không loại bỏ thư mục hiện tại khỏi sys.path, đây là hành vi của python: khi thực hiện một kịch bản (py.test trong trường hợp này) thư mục của tập lệnh được thêm vào sys.path. Khi thực thi tương tác, thư mục làm việc hiện tại được thêm vào sys.path. – flub