2013-02-07 13 views
9

मैं Django परीक्षण क्लाइंट के साथ एक एपीआई का परीक्षण कर रहा हूँ। एपीआई भू-अवरोधन का उपयोग करता है इसलिए मेरे परीक्षण में मुझे यह सुनिश्चित करने के लिए एक आईपी पता निर्दिष्ट करने की आवश्यकता है कि यह ठीक से काम करता है। मैं उसे कैसे कर सकता हूँ? निर्माता मेंDjango परीक्षण क्लाइंट के साथ एक आईपी पता कैसे निर्दिष्ट करें?

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

उत्तर

9

Client.get() विधि एक extra कीवर्ड तर्क पैरामीटर, जो हेडर निर्दिष्ट करने के लिए इस्तेमाल किया जा सकता है।

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

पास REMOTE_ADDR:

मैं इस तरह अपने परीक्षण में एक अनुरोध कर रहा हूँ।

client = HttpClient(REMOTE_ADDR='127.0.0.1') 

या

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

इस तरह के रूप में सरल:

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

तुम भी भविष्य की सभी अनुरोधों के लिए सेट कर सकते हैं:

client.defaults['REMOTE_ADDR'] = '1.2.3.4' 
इसके अलावा उपवर्गीकरण साथ

:

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

यह काम नहीं करता मेरे लिए – surfer190

+0

यह मेरे लिए काम नहीं करता है – surfer190

संबंधित मुद्दे