Django アプリケーションがあり、次の処理を行う必要があります。
- 私のビューの 1 つは、同じアプリケーションの別の URL エンドポイントに POST 要求を行う必要があります。
- そのために、
requests
モジュールを使用します。呼び出す必要があるエンドポイントの URL を組み立て、POST パラメーターをダンプして、呼び出しを実行します。 - これはほとんどの場合問題なく動作しますが、私が話している URL に対応するビューはテスト環境の状態について何も知らないため、テスト時に惨めに失敗します。
コードは次のようになります。
from django.conf import settings
import json
def view1(request, *args, **kwargs):
url = 'http://api.%s/view2/' % settings.DOMAIN
r = requests.post(
url,
data=json.dumps({'key': 'value'}),
)
// Notice that the ``url`` is a url of the actual deployed application,
// and therefore knows nothing about testing and its state. That's where
// it goes wrong.
問題は、これがテストで正しく動作する方法があるかどうかです。このクラスを使用してdjango.test.client.Client
、テスト リクエストを作成します。私の知る限り、このクラスのインスタンスは URL マッパーと直接やり取りします。したがって、ビューで作成する は、テスト済みurl
のアプリケーションではなく、デプロイされたアプリケーションへの外部 http 要求にすぎません。
ありがとう。