2016-04-11 8 views
1

Ich arbeite an einem Django-Projekt, in dem ich mehrere Apps habe. Jede App hat ein Testverzeichnis, in dem das gesamte Projekt getestet wird. Meine Verzeichnisstruktur ist wie folgt.So führen Sie alle Tests mit Python aus manage.py Testbefehl in Django

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

Ich kann

Python manage.py Test wie diese Tests laufen App_1.tests

, die alle Tests laufen in App_1/Tests/test_views.py. Aber ich muss das für alle App in meinem Projekt tun. Ich möchte einen einzigen Befehl, der alle Tests in allen Apps in meinem Projekt ausführt. Ich habe versucht, von

Python manage.py Test

läuft, aber ich habe folgende Fehler

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? 

Kann jemand mir sagt, wie ich kann alle Tests in meiner app mit einem einzigen Befehl ?

Antwort

2

Das Ausführen von python manage.py test ist der richtige Weg, um alle Tests in Ihren Projekten gleichzeitig auszuführen, Ihr Fehler wird durch etwas anderes verursacht.

Gibt es ein Problem mit der Ordnerstruktur Ihrer Tests? Um den Standard zu verwenden Unittest-Funktionalität sollten sie wie folgt gespeichert werden:

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

Ich denke, Ihr Problem wird verursacht, weil Sie einen tests Ordner in Ihrem tests Ordner haben kann, die Unittest ist verwirrend. Stellen Sie außerdem sicher, dass Sie __init__.py in Ihren Ordnern haben, damit Python die Dateien darin sehen kann. Schauen Sie sich here für die Django-Testdokumentation an.

+1

Ich habe 'tests.py' Datei in meinem App-Verzeichnis, die diesen Fehler verursacht hat. Jetzt funktioniert es. –

Verwandte Themen