Tôi có một Django thiết lập trường hợp thử nghiệm khá chuẩn (tôi nghĩ)Tôi có thể chạy thử nghiệm django (manage.py) từ một thư mục khác không?
api-name
manage.py
api-name
__init__.py
settings.py
wsgi.py
v0
project
stuff.py
tests
test_stuff.py
manage.py
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "api-name.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
wsgi.py
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "api-name.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
test_stuff.py
from django.test import TestCase
from v0.project.stuff import *
class ProjectTestCase(TestCase):
def setUp(self):
# set stuff up
def test_project_stuff(self):
# test stuff
def test_other_stuff(self):
# test stuff
Đây là những gì xảy ra khi tôi thực hiện các xét nghiệm:
[cwilbur api-name]$ ./manage.py test
Creating test database for alias 'default'...
..
----------------------------------------------------------------------
Ran 2 tests in 0.014s
OK
Destroying test database for alias 'default'...
[cwilbur api-name]$ cd ..
[cwilbur source]$ ./api-name/manage.py test
Creating test database for alias 'default'...
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Destroying test database for alias 'default'...
Đây có phải là (kiểm tra chạy từ thư mục gốc của dự án, nhưng không phải từ nơi khác) hành vi mong đợi? Có cách nào để thay đổi mọi thứ để nó sẽ làm việc (tôi muốn thực hiện các bài kiểm tra của tôi từ một móc trước khi commit trong một thư mục khác)?
Tôi đã thử thêm from tests import *
từ this answer, nhưng không hiệu quả. Tôi cũng đã thử di chuyển dòng sys.path.append
từ wsgi.py đến manage.py, nhưng điều đó cũng không giúp ích gì.
Có ý tưởng nào khác ngoài đó tôi có thể thử không?
Bạn chỉ có thể thêm lệnh 'cd' vào móc trước của bạn. – dizballanze
@dizballanze Điều đó có bất lợi là tôi phải thêm một đĩa CD khác vào cuối lệnh và trước khi thoát khỏi bất kỳ lối thoát nào để quay lại nơi tôi bắt đầu và không có tác dụng phụ. Đừng hiểu lầm tôi, tôi sẽ làm nếu không có cách nào khác. –
Nếu bạn sử dụng bash, bạn có thể thử chạy manage.py trong subshell như thế này: '(cd/somedir; ./manage.py test)' điều này sẽ không tạo ra bất kỳ tác dụng phụ nào. – dizballanze