我正在用Django測試客戶端測試一個API。該API使用地理阻塞,所以在我的測試中,我需要指定一個IP地址,以確保它能正常工作。我怎樣才能做到這一點?如何用Django測試客戶端指定IP地址?
我想提出一個請求,在我的測試是這樣的:
from django.test.client import Client as HttpClient
.
.
.
client = HttpClient()
response = client.get(uri + query_string)
我正在用Django測試客戶端測試一個API。該API使用地理阻塞,所以在我的測試中,我需要指定一個IP地址,以確保它能正常工作。我怎樣才能做到這一點?如何用Django測試客戶端指定IP地址?
我想提出一個請求,在我的測試是這樣的:
from django.test.client import Client as HttpClient
.
.
.
client = HttpClient()
response = client.get(uri + query_string)
的Client.get()
方法具有extra
關鍵字參數參數,其可被用來指定報頭。
c.get(/my-url/, REMOTE_ADDR="127.0.0.1")
通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'})
就這麼簡單這樣的:
client_address = request.META.get('HTTP_X_FORWARDED_FOR') or request.META.get('REMOTE_ADDR')
您也可以設定所有將來的請求:
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')
這不起作用對我來說 – surfer190
這不適合我 – surfer190