Heim  >  Fragen und Antworten  >  Hauptteil

python – Die Django-Test-URL gibt immer 404 zurück, aber das Durchsuchen der URL mit einem Browser ist normal.

Der Testcode lautet wie folgt:

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'...

Aber beim Durchsuchen der URL mit einem Browser werden normalerweise 200 zurückgegeben. Stimmt etwas mit der Einstellung nicht?

淡淡烟草味淡淡烟草味2711 Tage vor623

Antworte allen(3)Ich werde antworten

  • 怪我咯

    怪我咯2017-05-18 11:03:59

    看你的错误是404,说明访问/data/datamsg/的时候没找到url,要看你的url地址是怎么配的,试试/data/datamsg把后面的/去掉,又或才是你要加上http://localhost之类的

    Antwort
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-18 11:03:59

    你说你用浏览器可以浏览该 url
    你通过浏览器访问 url,浏览器会发送 GET 请求
    但是你在测试里面用的是 POST 请求。

    所以就算,浏览器里面正不正常和测试通不通过没有任何联系

    Antwort
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-18 11:03:59

    出现404,应该如1L所言,需要补全URL(host部分)。因为通过浏览器请求的时候,页面里URL是 / 开头,浏览器会自动加上host;而你在单元测试用例里,必须自己写完整的URL。
    出现302,你得看看:302跳转到了哪个URL?是你在哪里增加了什么限制/验证条件?比如,增加了“login_required”,如果系统检查没有登录,自动302跳转到登录页?
    还有一种可能,应该是出现403才对,你伪造了POST请求,而django默认是有csrf校验的。

    Antwort
    0
  • StornierenAntwort