2016-09-26 4 views
0

私は現在、私のDjangoテストのいくつかを動作させるのに苦労しています。 私がしようとしているのは、指定されたURL(消費したいREST API)が起動していて(ステータスコード200を返す)、それが期待値に応答しているかどうかをテストすることです。 しかし、URLが間違いなく正しいとはいえ、返されるのはステータスコード404(ページが見つかりません)です。 (私のブラウザで正確な文字列をしようとしました)Djangoの外部URLをテストする

これはコードです:それはいつもの代わりに200の404を返し

from django.test import TestCase 


class RestTest(TestCase): 
    def test_api_test_endpoint(self): 
     response = self.client.get("http://ip.to.my.api:8181/test/") 
     self.assertEqual(response.status_code, 200, "Status code not equals 200") 

... 誰もがここで私が間違って何をすべきか知っていますか?

答えて

0

self.clientは実際のHTTPクライアントではありません。 Djangoのテストクライアントで、テスト目的で自分のアプリケーションへのリクエストをシミュレートします。 HTTPリクエストを作成せず、完全なURLではなく、パスのみを受け入れます。

実際に外部URLが上がっていることを確認する必要がある場合は、requestsのような適切なHTTPクライアントが必要です。しかし、これは外部のAPIに依存するため、テストケースでは適切なものではないようです。そのAPIがダウンした場合、突然あなたのテストは失敗します。これは奇妙に思えます。これは、モニター業務ではなく、テストで行うことである可能性があります。

+0

返信いただきありがとうございます。私は受け入れられた答えとしてそれをマークします。 – 0ctar