2016-04-11 16 views
1

Birden fazla uygulamaya sahip olduğum bir django projesi üzerinde çalışıyorum. Her uygulamanın, tüm proje için test içeren bir test dizini vardır. Benim dizin yapımız aşağıdaki gibidir.Tüm testler python manage.py test komutuyla nasıl çalıştırılır django

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

Bu

piton manage.py testi gibi testler uygulayabilirim App_1/test/test_views.py tüm testler

App_1.tests. Ancak projemdeki tüm uygulamalar için bunu yapmak zorundayım. Projemdeki tüm uygulamaların içinde tüm testleri çalıştıran tek bir komut istiyorum. Ben

piton manage.py testi

çalıştırarak çalıştı ama ben hatayı aşağıdaki got

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? 

herhangi biri bana söyler Can Nasıl verebilirim tek komutla benim app tüm testler ?

cevap

2

python manage.py test Koşu, projelerinizdeki tüm sınamaları bir kerede çalıştırmak için doğru yoldur, hatanınız başka bir şeyden kaynaklanır.

Testlerinizin klasör yapısında bir sorun var mı? Onlar böyle saklanmalıdır işlevselliği unittest varsayılan kullanmak için:

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

Sana UnitTest kafa karıştırıcı senin tests klasör içinde tests klasör olabilir çünkü senin sorunun neden olduğunu düşünüyorum. Ayrıca, dosyalarınızda __init__.py olduğundan emin olun, böylece python dosyaları içeride görebilir. Django test belgeleri için here'a bakın.

+1

Uygulama dizinimde bu hatayı veren 'tests.py' dosyası var. Şimdi çalışıyor. –

İlgili konular