In meiner App habe ich Zeile if request.get_host() == Site.objects.get_current().domain
. Das Problem ist in meinen Tests dieser Zustand ist nie True
. request.get_host()
gibt testserver
zurück und Site.objects.get_current
gibt example.com
zurück. Ich weiß, dass ich SERVER_NAME
zu request
hinzufügen kann, aber ich möchte global nicht in jeder einzelnen Anfrage ändern.So überschreiben Sie Site.get_current()/request.get_host() in Tests
Antwort
Sie können request.get_host()
Verhalten durch Übergeben HTTP_HOST zu client.get()
Methode steuern. Sie können SERVER_NAME wie erwähnt verwenden, aber HTTP_HOST wird bevorzugt, da es von get_host() verwendet wird, und SERVER_NAME wird in Bezug auf die Variable SERVER_PORT verwendet, sodass Sie "SERVER_NAME: SERVER_PORT" in einem nicht standardmäßigen Port abrufen können Fälle.
So könnte Ihr Test wie folgt aussehen:
from django.test import TestCase
class FooTests(TestCase):
def test_bar(self):
self.client.get('/', HTTP_HOST='example.com')
Wenn Sie es ganz Testfall-Klasse tun möchten, können Sie client_class
wie dies außer Kraft setzen können:
from django.test import TestCase
from django.test.client import Client
class MyClient(Client):
HTTP_HOST = 'example.com'
def get(self, *args, **kwargs):
kwargs.setdefault('HTTP_HOST', self.HTTP_HOST)
return super(MyClient, self).get(*args, **kwargs)
class MyTestCase(TestCase):
client_class = MyClient
class FooTests(MyTestCase):
def test_foo(self):
self.client.get('/')
Oder Sie können ein schreiben Mischen Sie für TestCase
, die ähnlich wie in meinem vorherigen Beispiel aussehen wird.
Schließlich können Sie django.test.TestCase.client_class
überschreiben. Das wird global funktionieren, aber es sieht ein bisschen hacky aus, also würde ich dir das nicht empfehlen.
- 1. So überschreiben Sie System.Web.HttpContext.Current.Session (MVC4)
- 2. So überschreiben Sie die Aktualisierungsaktion in PagingToolbar
- 3. So überschreiben Sie toString() ordnungsgemäß in Java?
- 4. So überschreiben Sie Baugruppen in GAC
- 5. So implementieren Sie mehrere Tests für scipy.stats Tests
- 6. Selenium Webdriver TestNG Tests "überschreiben" sich gegenseitig
- 7. So überschreiben Sie SourceViewerConfiguration im Eclipse-Texteditor
- 8. So überschreiben Sie die Methoden von SpinnerAdapter
- 9. So überschreiben Sie reloadRowsAtIndexPaths ordnungsgemäß: withRowAnimation?
- 10. So rufen Sie Parent überschreiben Methode
- 11. So überschreiben Sie eine vorhandene Erweiterungsmethode
- 12. So überschreiben Sie die Sortiermethode Enumerables
- 13. So überschreiben Sie jQuery-ui.css Stile
- 14. So behandeln Sie globale Objekte/Tests, die andere Tests in Jest beeinflussen
- 15. Wie überschreiben neue Datum() auf Winkelmesser Tests
- 16. So überschreiben Django Admin
- 17. So überschreiben Sie DNS in HTTP-Verbindungen in Java
- 18. So überschreiben Sie die Importanmerkung für den Frühling
- 19. So überschreiben Sie eine Swift-Klasseneigenschaft zum Testen
- 20. So überschreiben CSSin Wordpress
- 21. So überschreiben Klassenmethoden
- 22. Überschreiben von Symfony 3.3 Container-Diensten in Controller-Tests
- 23. So überschreiben Sie die Shake-Konfiguration in der Befehlszeile
- 24. So überschreiben/ändern Sie FormsAuthentication LoginUrl in bestimmten Fällen
- 25. So überschreiben Sie die JS-Ressource in Magento 2 Checkout
- 26. So überschreiben Sie das Rückgängigmachen/Wiederholen in QPlainTextEdit
- 27. So überschreiben Sie ToString() für Aufzählung in C#?
- 28. So finden Sie Funktionen, die fast überschreiben sind in C++
- 29. So überschreiben Sie die Plugin-Funktion in theme's functions.php Wordpress
- 30. So überschreiben Sie die Sortierreihenfolge der Suchergebnisse in Plone