2016-04-06 12 views
2

ich ein Projekt auf Django 1.8.12 laufen und ich möchte Testdatenbank zwischen den Läufen als described in the documentation bewahren. Auch wenn der test Befehl selbst die -k/--keepdb Option Hilfetext auflistet, indem es fehlschlägt:Warum erkennt Djangos Testbefehl einige Optionen nicht?

[email protected] /vagrant/project (master) $ python manage.py test -k myapp.tests.testcase 
nosetests myapp.tests.testcase -k --verbosity=1 
Usage: manage.py [options] 

manage.py: error: no such option: -k 

[email protected] /vagrant/project (master) $ python manage.py test --keepdb myapp.tests.testcase 
nosetests myapp.tests.testcase --keepdb --verbosity=1 
Usage: manage.py [options] 

manage.py: error: no such option: --keepdb 

den gleichen Befehl mit anderen Optionen aufrufen, z.B. -q oder --failfast funktioniert gut. Auf der anderen Seite schlagen einige andere aufgelistete Optionen wie --no-color in ähnlicher Weise fehl.

Fehle ich hier etwas? Wie kann ich diese Optionen an den Befehl übergeben?

+0

Sind Sie mit 'django.test.TestCase' in den Tests oder' unittest.TestCase'? – C14L

+0

Ich benutze 'django.test.TestCase', aber ich denke nicht, dass es sehr wichtig ist, da sie wahrscheinlich nie aufgerufen werden, der Fehler beendet die Ausführung davor. Der Wechsel zu "unittest.TestCase" oder die Definition von "class TestCase (object): pass" verursacht dieselbe Fehlermeldung, wenn die Option "-k" verwendet wird. –

+0

Können Sie Tests in anderen Apps ausführen oder scheitern sie auch? Die [Django 1.8 Quelle] (https://github.com/django/django/blob/1.8.12/django/test/runner.py#L55) weiß es. – C14L

Antwort

3

Ich hatte ein ähnliches Problem, und Problem war TEST_RUNNER auf django_nose in den Projekteinstellungen festgelegt. So in ../settings/local.py, zu kommentieren oder diese zu entfernen:

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'

ermöglicht es der --keepdb Schalter benutzt werden.

+0

In der Tat scheint --keepdb eine Option für Djangos Standardtestrunner zu sein. Ich bevorzuge es jedoch, NoseTests zu verwenden, also führt das Ausführen der Tests mit 'REUSE_DB = 1 python manage.py test' den Trick für mich aus. Die Antwort als richtig markieren, da sie mir geholfen hat, eine Lösung zu finden, die für mich geeignet war. –

+0

Neuere Versionen von 'django_nose' gehen durch die' --keepdb' Optionen, also ist eine andere Lösung, das Python Paket zu aktualisieren (zB für mich, Upgrade von '' django-nose' 'von 1.4.1 auf 1.4.4 erlaubt '- keepdb' zur Arbeit) –