2013-02-07 59 views
9

我正在用Django测试客户端测试一个API。该API使用地理阻塞,所以在我的测试中,我需要指定一个IP地址,以确保它能正常工作。我怎样才能做到这一点?如何用Django测试客户端指定IP地址?

我想提出一个请求,在我的测试是这样的:

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