[英]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.