測試程式碼如下:
from django.test import TestCase
# Create your tests here.
class SendviewsTestCase(TestCase):
def test_get_data(self):
rep = self.client.post('/data/datamsg/',{'data_name':'测试数据'})
print (rep.content)
# 测试http请求的返回码是否正确
self.assertEqual(rep.status_code,200)
======================================================================
FAIL: test_get_data (dataforpro.tests.SendviewsTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/yangtz/developproject/backend/dataforpro/tests.py", line 20, in test_get_data
self.assertEqual(rep.status_code,200)
AssertionError: 404 != 200
----------------------------------------------------------------------
Ran 1 test in 0.017s
FAILED (failures=1)
Destroying test database for alias 'default'...
但是用瀏覽器瀏覽該url時,就能正常回傳200,是不是哪裡的設定不對?
看你的錯誤是404,表示訪問/data/datamsg/的時候沒找到url,要看你的url地址是怎麼配的,試試/data/datamsg把後面的/去掉,又或才是你要加上http://localhost之類的
你說你用瀏覽器可以瀏覽該 url
你透過瀏覽器存取 url,瀏覽器會發送 GET 請求
但是你在測試裡面用的是 POST 請求。
所以就算,瀏覽器裡面正不正常和測試通不通過沒有任何聯繫
出現404,應該如1L所言,需要補全URL(host部分)。因為透過瀏覽器請求的時候,頁面裡URL是 / 開頭,瀏覽器會自動加上host;而你在單元測試案例裡,必須自己寫完整的URL。
出現302,你得看看:302跳到哪個URL了?是你在哪裡增加了什麼限制/驗證條件?例如,增加了“login_required”,如果系統檢查沒有登錄,自動302跳到登入頁面?
還有一種可能,應該是出現403才對,你偽造了POST請求,而django預設是有csrf校驗的。