Maison  >  Questions et réponses  >  le corps du texte

python - L'URL de test de Django renvoie toujours 404, mais il est normal de parcourir l'URL avec un navigateur.

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 ?

淡淡烟草味淡淡烟草味2711 Il y a quelques jours620

répondre à tous(3)je répondrai

  • 怪我咯

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

    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

    répondre
    0
  • 曾经蜡笔没有小新

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

    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

    répondre
    0
  • 曾经蜡笔没有小新

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

    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.

    répondre
    0
  • Annulerrépondre