2013-02-07 16 views
9

Django test istemcisiyle bir API'yi test ediyorum. API, coğrafi engellemeyi kullanır, bu yüzden testimde, düzgün çalıştığından emin olmak için bir IP adresi belirtmem gerekiyor. Bunu nasıl yapabilirim?Django test istemcisi ile bir IP adresi nasıl belirlenir?

Bu gibi benim testte bir istek yapıyorum:

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

cevap

9

Client.get() yöntem başlıkları belirlemek için kullanılabilecek bir extra kelime argümanlar parametresi vardır.

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

Geçiş REMOTE_ADDR yapıcısı içinde.

client = HttpClient(REMOTE_ADDR='127.0.0.1') 

veya

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

böyle itibariyle basit:

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

Ayrıca tüm gelecek istekler için ayarlayabilirsiniz:

subclassing ile de
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

Bu işe yaramazsa benim için – surfer190

+0

Bu benim için çalışmıyor – surfer190