2013-02-07 41 views
9

Tôi đang thử nghiệm một API với ứng dụng thử nghiệm Django. API sử dụng tính năng chặn địa lý vì vậy trong bài kiểm tra của tôi, tôi cần phải chỉ định địa chỉ IP để đảm bảo rằng nó hoạt động đúng. Làm thế nào tôi có thể làm điều đó?Làm cách nào để chỉ định địa chỉ IP với trình kiểm tra Django?

Tôi đang thực hiện một yêu cầu trong thử nghiệm của tôi như thế này:

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

Trả lời

9

Phương pháp Client.get() có một tham số extra đối số từ khóa, có thể được dùng để xác định tiêu đề.

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

đèo REMOTE_ADDR trong constructor.

client = HttpClient(REMOTE_ADDR='127.0.0.1') 

hoặc

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

Như đơn giản như thế này:

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

Bạn cũng có thể thiết lập nó cho tất cả các yêu cầu trong tương lai:

client.defaults['REMOTE_ADDR'] = '1.2.3.4' 

Ngoài ra với subclassing:

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

này không hoạt động cho tôi – surfer190

+0

Điều này không hiệu quả đối với tôi – surfer190

Các vấn đề liên quan