python - url ujian Django sentiasa mengembalikan 404, tetapi menyemak imbas url dengan penyemak imbas adalah perkara biasa.
淡淡烟草味
淡淡烟草味 2017-05-18 11:01:59
0
3
699

Kod ujian adalah seperti berikut:

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

Tetapi apabila menyemak imbas url dengan penyemak imbas, ia mengembalikan 200 seperti biasa.

淡淡烟草味
淡淡烟草味

membalas semua(3)
刘奇

Nampaknya ralat anda ialah 404, yang bermaksud bahawa url itu tidak ditemui semasa mengakses /data/datamsg/ Ia bergantung pada cara alamat url anda dikonfigurasikan Cuba /data/datamsg dan alih keluar / selepas itu adalah apa yang anda mahukan. Tambah http://localhost atau sesuatu seperti itu

曾经蜡笔没有小新

Anda berkata anda boleh menyemak imbas url dengan penyemak imbas
Jika anda mengakses url melalui penyemak imbas, penyemak imbas akan menghantar permintaan GET
tetapi anda menggunakan permintaan POST dalam ujian.

Jadi walaupun tiada kaitan antara pelayar itu normal dan ujian lulus atau tidak

曾经蜡笔没有小新

404 muncul, sepatutnya seperti yang dikatakan 1L, URL (bahagian hos) perlu dilengkapkan. Kerana apabila meminta melalui penyemak imbas, URL dalam halaman bermula dengan /, dan penyemak imbas akan menambah hos secara automatik dan dalam kes ujian unit, anda mesti menulis URL lengkap itu sendiri.
Apabila 302 muncul, anda perlu menyemak: URL mana 302 melompat ke? Di manakah anda menambah sebarang sekatan/syarat pengesahan? Sebagai contoh, jika "login_required" ditambah, jika sistem menyemak bahawa tiada log masuk, adakah ia secara automatik melompat ke halaman log masuk dengan 302?
Ada satu lagi kemungkinan Ia sepatutnya 403. Anda memalsukan permintaan POST, dan Django mempunyai pengesahan CSRF secara lalai.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan