2016-09-26 62 views
0

我目前很難讓一些Django測試正常工作。 我想要做的是測試一個給定的URL(我想要使用的REST API)是否已經啓動並運行(返回狀態代碼200),如果它響應了預期的值,那麼稍後會進行測試。 但是,我得到的所有信息都是狀態碼404(頁面未找到),即使URL確實是正確的。 (嘗試使用的確切串在我的瀏覽器)在Django中測試外部URL

這是代碼:

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") 

它總是返回404,而不是200 ... 任何人都知道我錯在這裏做什麼?

回答

0

self.client不是真正的HTTP客戶端;它是Django測試客戶端,它爲了測試的目的而模擬對您自己的應用程序的請求。它不會發出HTTP請求,它只接受一個路徑,而不是一個完整的URL。

如果您確實需要檢查外部URL是否已啓動,則需要使用正確的HTTP客戶端,如requests。但是,在測試用例中,這似乎並不合適,因爲它取決於外部API;如果這個API崩潰了,突然你的測試會失敗,這看起來很奇怪。這可能是你在監控工作中做的事情,但不是在測試中。

+0

感謝您的回覆!我會將它標記爲接受的答案,一次讓我讓:) – 0ctar