2016-03-21 13 views
0

ich einen Test Läufer in einem django Paket, das über zwei Verzeichnisse aufgeteilt wird, etwa so:Importieren von Testskripts in ein django testrunner

package/models.py 
package/tests/__init__.py 
package/tests/test_foo.py 
package/contrib/bar/models.py 
package/contrib/bar/tests/__init__.py 
package/contrib/bar/tests/test_bar.py 

In package/tests/__init__.py Ich habe dies:

from package.contrib.tests import test_bar 

Und

./manage.py test package.tests.test_bar 

Allerdings, wenn ich eine dieser laufen: einfach gut kann diese laufen

./manage.py test package 
./manage.py test package.tests 

test_bar wird nicht ausgeführt.

Ich habe dies bestätigt, indem ich einen Test geschrieben habe, der immer fehlschlägt und wenn die Tests mit einem der obigen Aufrufe ausgeführt werden, funktionieren die Tests.

Gibt es eine Möglichkeit, eine test_suite in eine andere Testsuite zu importieren?

+0

Haben Sie versucht, '*' zu importieren? 'aus package.contrib.tests.test_bar import *'? – v1k45

+0

@ v1k45 Das hat funktioniert, aber ich suche auch andere Antworten. Aber wenn nichts anderes auftaucht, solltest du eine Antwort geben, damit ich es akzeptieren (oder zumindest upvoten) kann. –

Antwort

2

Um Tests von contrib Paket auszuführen mit

$ ./manage.py test package.tests 

Sie *__init__.py in Ihrem tests Paket von contrib Tests importieren müssen.

So:

from package.contrib.tests.tests_bar import * 
from .test_foo import * 

Dadurch werden alle contrib Tests durchführen, auch wenn Sie package.tests als CLI Argument übergeben.

Sie können jedoch nicht angeben, dass nur contrib.test_bar als package.tests.test_bar ausgeführt werden soll. Dazu einfach das test_bar Modul in die __init__.py Datei importieren.

+0

Ich habe die letzte 'import test_bar' versucht, aber sie scheint nicht vom Testläufer aufgegriffen zu werden. Der Rest hat funktioniert. Danke :) –

+0

Es funktionierte für mich. Bist du sicher, dass du es genauso importiert hast wie in der Frage? – v1k45

+0

Hinweis für die Leser: Dies war die akzeptierte Antwort, bis OP raserei und versuchte, Umstehende für ihre [politische Meinungsverschiedenheit mit Stack Overflow] zu bestrafen (http://meta.stackoverflow.com/q/342994). Fühlen Sie sich frei, es eine Aufwertung zu werfen, um es zu kompensieren, wenn Sie mögen ;-) –