18

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

我在我的测试中提出这样的请求:

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

4 回答 4

29

Client.get()方法有一个extra关键字 arguments 参数,可用于指定标头。

c.get(/my-url/, REMOTE_ADDR="127.0.0.1") 
于 2013-02-07T11:05:02.340 回答
10

在构造函数中传递 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'})
于 2013-02-07T11:02:57.663 回答
0

您还可以为所有未来的请求设置它:

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')
于 2017-07-23T10:27:50.930 回答
-2

像这样简单:

client_address = request.META.get('HTTP_X_FORWARDED_FOR') or request.META.get('REMOTE_ADDR')
于 2013-02-07T11:08:32.280 回答