Ich habe begonnen, einen benutzerdefinierten Kontextprozessor zu verwenden, um ein Objekt an jede Antwort zu übergeben. Das einzige Problem dabei ist, dass meine Tests jetzt fehlschlagen, weil sie dieses Objekt nicht in der Datenbank finden können. Ich habe versucht, einen Test mit Request Factory zu erstellen, da mein Verständnis war, dass dies Tests von Django wie Middleware usw. isoliert. Ich vermute, dass Kontext-Prozessoren immer noch ausgeführt werden. Gibt es einen Weg, um darüber hinweg zu kommen? Muss ich dieses Objekt bei jedem Test bestehen? Wenn es irgendeinen Weg gibt, es zu vermeiden, würde ich es lieber tun.Benutzerdefinierte Kontextprozessoren, UnitTests und Request Factory
Antwort
Nach weiterer Untersuchung, denke ich, ist die beste Lösung, das Context_Processors Tupel während jedes Tests zu überschreiben. Dies ist seit 1.4 möglich. Es scheint besser, als das erforderliche Objekt an jeden Test zu senden. Ich würde gerne untersuchen, ob ich dafür einen Dekorateur schreiben kann, aber ich weiß noch nicht genug über sie. Referenz: https://docs.djangoproject.com/en/dev/topics/testing/overview/#overriding-settings
edit: Eine weitere Implementierung dieser Lösung hier skizziert: How to Unit test with different settings in Django? wahrscheinlich besser, da es für eine ganze tests.py
edit2 getan werden kann: entdeckt zu haben, dass Dekorateure sind eigentlich Python-Konstrukte (vorausgesetzt sie waren benutzerdefinierte Django Funktionalität! massive Neuling zu Python, übrigens. lernte Django, bevor ich gelernt, Python), ich denke, eine benutzerdefinierte Dekorateur ist die Art, wie ich damit gehen werde.
edit3: Ich denke eigentlich eine einfachere Lösung wäre, eine test.py Datei in meinem Einstellungsmodul zu haben und mein Basiseinstellungen context_processor Modul mit dem der Testeinstellungen in den Tests zu überschreiben. Zum Beispiel:
from settings import localsettings
from settings import testsetttings
localtestsettings.context_processors = testsettings.context_processors
tests(unittest):.....
Alle anderen Vorschläge sind mehr als willkommen.
edit4: Okay. Ich fühle mich jetzt dumm. Offensichtlich besteht die Lösung, die ich verwendet habe, darin, eine Testeinstellungsdatei zu erstellen und diese an den Testbefehl zu übergeben.
verwenden auf tests.py arbeitete gut mit mir
from django.test import TestCase, Client, override_settings
@override_settings (
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
)
class HomeViewTestCase(TestCase):
...
- 1. Entkopplung einer Factory, um benutzerdefinierte Factory-Implementierungen zu ermöglichen
- 2. Fügen Sie benutzerdefinierte Header ‚request‘
- 3. Benutzerdefinierte Objekt-Factory-Erweiterung für Unity
- 4. UnitTests und Spring - neue Bohnen erstellen?
- 5. JavaFX benutzerdefinierte Zelle Factory mit benutzerdefinierten Objekten
- 6. Best Practice für Kontextprozessoren vs Template Tags?
- 7. Python-Unittests in Jenkins?
- 8. SQLAlchemy scheint innerhalb Unittests
- 9. Unittests für Endlosschleife
- 10. leere benutzerdefinierte Request-Header auf der Serverseite
- 11. Android: Volley HTTP-Request-Header benutzerdefinierte
- 12. Benutzerdefinierte Authentifizierung: Login-Helper für Request-Spezifikationen
- 13. MEF und ABSTRACT FACTORY
- 14. Factory Girl und has_one
- 15. nicht Simulator starten, wenn Unittests
- 16. mock php's Ressourcentyp für Unittests
- 17. Unittests von einer Eingabeaufforderung ausführen
- 18. Async Unittests Setup in C#
- 19. Python roh Eingang in Unittests
- 20. Symfony/Doctrine UnitTests mit SQLite-Speicher DB
- 21. AFNetworking und POST Request
- 22. XMLHttp Request und Blobs
- 23. wcf und Factory \ plugin pattern
- 24. factory Rspec und SQLite3 :: ConstraintException
- 25. Spring Boot: Wie eine benutzerdefinierte Repository-Factory-Bean
- 26. Benutzerdefinierte Controller Factory, Dependency Injection/Struktur Probleme mit ASP.NET MVC
- 27. Wann ist es angebracht, Django-Kontextprozessoren zu verwenden?
- 28. Frameworks für Unittests für Multithreading in Java
- 29. Async und Request, Ergebnisse zurückgeben
- 30. Default Python Unittests gibt falsche Positive