2016-04-11 29 views
1

我正在開發一個django項目,其中有多個應用程序。每個應用程序都有一個測試目錄,可以測試整個項目。我的目錄結構如下。如何使用python manage.py test命令在django中運行所有測試

Project 
     App_1 
      tests 
       __init__.py 
       tests_views.py 
     App_2 
      tests 
       __init__.py 
       tests_views.py 
     settings.py 
     manage.py 

我可以運行像這樣

蟒蛇manage.py測試測試App_1.tests

其運行APP_1 /測試/ test_views.py所有測試。但我必須爲我的項目中的所有應用程序執行此操作。我想要一個能夠在我的項目中的所有應用程序中運行所有測試的命令。我試圖通過運行

蟒蛇manage.py測試

,但我得到了以下錯誤

Traceback (most recent call last): 
    File "manage.py", line 9, in <module> 
    execute_from_command_line(sys.argv) 
    File "/srv/www/project/shared/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line 
    utility.execute() 
    File "/srv/www/project/shared/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/srv/www/project/shared/env/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 30, in run_from_argv 
    super(Command, self).run_from_argv(argv) 
    File "/srv/www/project/shared/env/local/lib/python2.7/site-packages/django/core/management/base.py", line 390, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/srv/www/project/shared/env/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 74, in execute 
    super(Command, self).execute(*args, **options) 
    File "/srv/www/project/shared/env/local/lib/python2.7/site-packages/django/core/management/base.py", line 441, in execute 
    output = self.handle(*args, **options) 
    File "/srv/www/project/shared/env/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 90, in handle 
    failures = test_runner.run_tests(test_labels) 
    File "/srv/www/project/shared/env/local/lib/python2.7/site-packages/django/test/runner.py", line 209, in run_tests 
    suite = self.build_suite(test_labels, extra_tests) 
    File "/srv/www/project/shared/env/local/lib/python2.7/site-packages/django/test/runner.py", line 150, in build_suite 
    tests = self.test_loader.discover(start_dir=label, **kwargs) 
    File "/usr/lib/python2.7/unittest/loader.py", line 204, in discover 
    tests = list(self._find_tests(start_dir, pattern)) 
    File "/usr/lib/python2.7/unittest/loader.py", line 285, in _find_tests 
    for test in self._find_tests(full_path, pattern): 
    File "/usr/lib/python2.7/unittest/loader.py", line 265, in _find_tests 
    raise ImportError(msg % (mod_name, module_dir, expected_dir)) 
ImportError: 'tests' module incorrectly imported from '/vagrant/code/project/App_1/tests'. Expected '/vagrant/code/project/App_1'. Is this module globally installed? 

任何一個可以告訴我怎麼可以在我的應用程序所有的測試用一個命令?

回答

2

運行python manage.py test是一次運行項目中所有測試的正確方法,您的錯誤是由其他原因造成的。

您的測試的文件夾結構有問題嗎?要使用單元測試功能,它們應該被存儲這樣的預設:

myproject/ 
    myapp/ 
     tests/ 
      __init__.py 
      test_models.py 
      test_views.py 

我覺得您的問題造成的,因爲你可能你的tests文件夾,這是混淆了單元測試中有tests文件夾。還要確保你的文件夾中有__init__.py,這樣python才能看到裏面的文件。查看Django測試文檔here

+1

我在我的應用程序目錄中有'tests.py'文件導致該錯誤。現在它正在工作。 –

相關問題