簡體   English   中英

Django測試失敗,錯誤碼為404

[英]Django test failing with 404 when it shouldn't

我正在嘗試為Django站點的HTTP get操作編寫測試用例。 這是該應用程序中的test.py :(我已按照我的安全組的要求更改了該帖子中的一些名稱和路徑,但輸出是准確的)

from django.test import TestCase

class DashboardTestCase(TestCase):
    def test_index(self):
        resp = self.client.get('http://myhost.mydomain.com/apiv1/masterservers/apollo/')
        self.assertEqual(resp.status_code,200)

當我在命令行上進行卷曲(使用localhost:///apiv1/masterservers/apollo/或完整URL)時,它工作得很好,並且我收到了預期的JSON(當前,我正在序列化主機名)開發):

$ curl localhost:///apiv1/masterservers/apollo/
{"servername":"apollo"}

$ curl http://myhost.mydomain.com/apiv1/masterservers/apollo/
{"servername":"apollo"}

我遇到的問題是運行./manage.py test ,得到以下信息:

Traceback (most recent call last):
  File "/var/www/django-apps/project/dashboard/tests.py", line 8, in test_index
    self.assertEqual(resp.status_code,200)
AssertionError: 404 != 200

----------------------------------------------------------------------
Ran 1 test in 0.368s

還要注意的另一件事是,在這種情況下,當我刪除主機名(apollo)並僅使用/apiv1/masterservers/運行測試時,測試就可以了,並且http返回代碼與200匹配。

另一件事,我安裝了httpie而不是curl,因為它顯示了HTTP標頭信息,而這是我從命令行使用相同URL獲得的結果:

$ http http://myhost.mydomain.com/apiv1/masterservers/apollo/
HTTP/1.1 200 OK
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Connection: Keep-Alive
Content-Type: application/json
Date: Wed, 09 Mar 2016 19:05:16 GMT
Keep-Alive: timeout=5, max=100
Server: Apache/2.4.6 (CentOS) PHP/5.4.16 mod_wsgi/3.4 Python/2.7.5
Transfer-Encoding: chunked
Vary: Accept,Cookie

{
    "servername": "apollo"
}

如果測試之外的返回碼為200,有人有任何理由為什么此測試會失敗並返回404的返回碼嗎?

就在我提交這個問題時,我想起了關於測試數據庫的知識,以及如何將其創建為空的,因此不存在“ apollo”。 使用下面的代碼創建它之后,測試通過了:

MasterServers.objects.create(servername="apollo")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM