Rumah > Soal Jawab > teks badan
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.
怪我咯2017-05-18 11:03:59
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
曾经蜡笔没有小新2017-05-18 11:03:59
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
曾经蜡笔没有小新2017-05-18 11:03:59
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.