2013-02-07 20 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

関連する問題