我正在使用Django测试客户端测试API。 API使用地理阻止,所以在我的测试中我需要指定一个IP地址以确保它正常工作。我怎么能这样做?
我正在我的测试中提出这样的请求:
from django.test.client import Client as HttpClient
.
.
.
client = HttpClient()
response = client.get(uri + query_string)
答案 0 :(得分:17)
Client.get()
方法有一个extra
关键字参数参数,可用于指定标题。
c.get(/my-url/, REMOTE_ADDR="127.0.0.1")
答案 1 :(得分:6)
在构造函数中传递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'})
答案 2 :(得分:-1)
就像这样简单:
client_address = request.META.get('HTTP_X_FORWARDED_FOR') or request.META.get('REMOTE_ADDR')
答案 3 :(得分:-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')