python – Die Django-Test-URL gibt immer 404 zurück, aber das Durchsuchen der URL mit einem Browser ist normal.
淡淡烟草味
淡淡烟草味 2017-05-18 11:01:59
0
3
631

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?

淡淡烟草味
淡淡烟草味

Antworte allen(3)
刘奇

看你的错误是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校验的。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!