Stack Overflow en español Asked by Peter Paul on November 7, 2021
Anteriormente me encontraba trabajando en Django en su version 1.11 y pase a la version 2.0
Esto trajo consigo de que algunas pruebas que tenia definida no me funcionan.
A continuacion les pongo el codigo de una:
from rest_framework.test import APITestCase
from django.urls import reverse
class PingApiTestCase(APITestCase):
def setUp(self):
self.access_token = self.create_access_token() # metodo que me crea un token para el test
def test_increase_token_time(self):
url = reverse('ping')
data = { 'token': self.access_token.token }
response = self.client.patch(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
Esta es la definicion de la url correspondiente al name ‘ping’ :
from django.conf.urls import url
urlpatterns = [
url(r'^ping/$',
ping_view.PingView.as_view(),
name='ping')
]
En el test, cuando llega a la linea de invocar el reverse lanza el sigiente error:
{NoReverseMatch}Reverse for ‘ping’ not found. ‘ping’ is not a valid
view function or pattern name.
Alguna idea?
Muchas gracias de antemano
La cuestión es:
En el fichero urls.py hay que hacer una pequeña refactorizacion debido a la migracion de Django hacia su version 2.0, o sea:
from django.urls import path
urlpatterns = [
path(r'^ping/$',
ping_view.PingView.as_view(),
name='ping')
]
Debido a que en mi proyecto poseo mas de una aplicacion, en la linea que invoco el metodo reverse
, en el parametro debo definir tambien la aplicacion de donde proviene la ruta, o sea:
def test_increase_token_time(self):
url = reverse('adminapp:ping')
data = { 'token': self.access_token.token }
response = self.client.patch(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
Answered by Peter Paul on November 7, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP