2015-04-15 15 views
5

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?

+0

Bạn chỉ có thể thêm lệnh 'cd' vào móc trước của bạn. – dizballanze

+0

@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. –

+1

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

Trả lời

1

Căn cứ ý kiến ​​từ @dizballanze và phản hồi từ tổng quan của mã này, tôi lên vết thương làm điều này:

(cd /somedir && python manage.py test) 

tôi vẫn tò mò về việc liệu nó có thể chạy các bài kiểm tra mà không cding vào thư mục gốc của dự án, mặc dù.

Các vấn đề liên quan