Wenn ich einen Test durchführe, gibt es eine Verzögerung von 70 bis 80 Sekunden zwischen dem Start und dem tatsächlichen Beginn des Tests. Wenn ich beispielsweise einen Test für ein kleines Modul durchführe (mit time python manage.py test myapp), erhalte ich
Code: Select all
Creating test database for alias 'default'...
......
----------------------------------------------------------------
Ran 6 tests in 2.161s
OK
Destroying test database for alias 'default'...
real 1m21.612s
user 1m17.170s
sys 0m1.400s
Code: Select all
Creating test database for alias 'default'...
Code: Select all
.......
Ich habe etwa 30 Apps, die meisten mit 1 bis 3 Datenbankmodellen, daher sollte dies eine Vorstellung von der Projektgröße geben. Ich verwende SQLite für Unit-Tests und habe einige der vorgeschlagenen Verbesserungen implementiert. Ich kann nicht meine gesamte Einstellungsdatei veröffentlichen, füge aber gerne alle erforderlichen Informationen hinzu.
Ich verwende einen Läufer
Code: Select all
from django.test.runner import DiscoverRunner
from django.conf import settings
class ExcludeAppsTestSuiteRunner(DiscoverRunner):
"""Override the default django 'test' command, exclude from testing
apps which we know will fail."""
def run_tests(self, test_labels, extra_tests=None, **kwargs):
if not test_labels:
# No appnames specified on the command line, so we run all
# tests, but remove those which we know are troublesome.
test_labels = (
'app1',
'app2',
....
)
print ('Testing: ' + str(test_labels))
return super(ExcludeAppsTestSuiteRunner, self).run_tests(
test_labels, extra_tests, **kwargs)
Code: Select all
TEST_RUNNER = 'config.test_runner.ExcludeAppsTestSuiteRunner'
Ich habe viel darüber gelesen, wie man den Test selbst beschleunigt, aber keine Hinweise darauf gefunden, wie man die Datenbankinitialisierung optimieren oder vermeiden kann. Ich habe die Vorschläge gesehen, nicht mit der Datenbank zu testen, aber ich kann oder weiß nicht, wie ich das ganz vermeiden kann.
Bitte lassen Sie mich wissen, wenn
- Das ist normal und erwartet
- Nicht erwartet (und hoffentlich eine Lösung oder ein Hinweis, was zu tun ist)
Vielen Dank
Ich habe den Test (für eine einzelne App) mit --verbose 3 ausgeführt und festgestellt, dass das alles mit Migrationen zusammenhängt:
Code: Select all
Rendering model states... DONE (40.500s)
Applying authentication.0001_initial... OK (0.005s)
Applying account.0001_initial... OK (0.022s)
Applying account.0002_email_max_length... OK (0.016s)
Applying contenttypes.0001_initial... OK (0.024s)
Applying contenttypes.0002_remove_content_type_name... OK (0.048s)
Applying s3video.0001_initial... OK (0.021s)
Applying s3picture.0001_initial... OK (0.052s)
... Many more like this
Mobile version