python - L'URL de test de Django renvoie toujours 404, mais il est normal de parcourir l'URL avec un navigateur.
淡淡烟草味
淡淡烟草味 2017-05-18 11:01:59
0
3
686

Le code du test est le suivant :

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

Mais lorsque vous parcourez l'URL avec un navigateur, il renvoie normalement 200. Y a-t-il un problème avec le paramètre ?

淡淡烟草味
淡淡烟草味

répondre à tous(3)
刘奇

Il semble que votre erreur soit 404, ce qui signifie que l'URL n'a pas été trouvée lors de l'accès à /data/datamsg/. Cela dépend de la configuration de votre adresse URL. Essayez /data/datamsg et supprimez le / après, ou peut-être. c'est ce que vous voulez. Ajoutez http://localhost ou quelque chose comme ça

曾经蜡笔没有小新

Vous avez dit que vous pouvez parcourir l'URL avec un navigateur
Lorsque vous accédez à l'URL via le navigateur, le navigateur enverra une requête GET
mais vous avez utilisé une requête POST dans le test.

Donc, même s'il n'y a aucun lien entre le fait que le navigateur soit normal et le test réussi ou non

曾经蜡笔没有小新

Lorsque 404 apparaît, cela devrait être comme le dit 1L, l'URL (partie hôte) doit être complétée. Parce que lors d'une demande via le navigateur, l'URL de la page commence par /, et le navigateur ajoutera automatiquement l'hôte et dans le cas de test unitaire, vous devez écrire vous-même l'URL complète ;
Lorsque 302 apparaît, vous devez vérifier : À quelle URL renvoie 302 ? Où avez-vous ajouté des restrictions/conditions de validation ? Par exemple, si « login_required » est ajouté, si le système vérifie qu'il n'y a pas de connexion, passera-t-il automatiquement à la page de connexion avec un 302 ?
Il existe une autre possibilité. Cela devrait être 403. Vous avez falsifié une requête POST et Django a une vérification CSRF par défaut.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal