2013-02-07 2 views
9

Ich teste eine API mit Django Test-Client. Die API verwendet Geoblocking, daher muss ich in meinem Test eine IP-Adresse angeben, um sicherzustellen, dass sie ordnungsgemäß funktioniert. Wie kann ich das machen?Wie kann ich eine IP Adresse mit dem Django Test Client angeben?

ich eine Anfrage in meinem Test wie folgt machen:

from django.test.client import Client as HttpClient 
. 
. 
. 
client = HttpClient() 
response = client.get(uri + query_string) 

Antwort

9

Client.get() Die Methode hat eine extra Schlüsselwort Argumente Parameter, die verwendet werden können Headern zu spezifizieren.

c.get(/my-url/, REMOTE_ADDR="127.0.0.1") 
5

Pass REMOTE_ADDR in Konstruktor.

client = HttpClient(REMOTE_ADDR='127.0.0.1') 

oder

client.get('/path/', {'param':'foo'}, **{'HTTP_USER_AGENT':'firefox-22', 'REMOTE_ADDR':'127.0.0.1'}) 
-1

So einfach wie folgt aus:

client_address = request.META.get('HTTP_X_FORWARDED_FOR') or request.META.get('REMOTE_ADDR') 
-1

Sie können es auch für alle zukünftigen Anforderungen eingestellt:

client.defaults['REMOTE_ADDR'] = '1.2.3.4' 

Auch mit Subclassing:

class DecoratedApiClient(Client): 
    def set_ip_addr(self, ip_addr): 
     self.defaults['REMOTE_ADDR'] = ip_addr 

client = DecoratedApiClient() 
client.set_ip_addr('1.2.3.4') 
+0

Das funktioniert nicht für mich – surfer190

+0

Das funktioniert nicht für mich – surfer190

Verwandte Themen