2012-10-08 16 views
5

Estoy escribiendo pruebas de unidad para las vistas de django. He observado que uno de mis puntos de vista devuelve el código de redirección 301, que no se espera.
Aquí está mi views.py mencionado anteriormente.El cliente de prueba Django obtiene una redirección 301 al acceder a la url

def index(request): 
    return render(request, 'index.html', 
        {'form': QueryForm()}) 

def query(request): 
    if request.is_ajax(): 
     form = QueryForm(request.POST) 
     return HttpResponse('valid') 

Debajo está urls.py.

urlpatterns = patterns('', 
     url(r'^$', 'core.views.index'), 
     url(r'^query/$', 'core.views.query') 
     ) 

Y unittest que fallará.

def so_test(self): 
    response = self.client.post('/') 
    self.assertEquals(response.status_code, 200) 

    response = self.client.post('/query', {}) 
    self.assertEquals(response.status_code, 200) 

Mi pregunta es: ¿por qué hay estado 301 devuelto?

+0

Cuál está regresando 301? ¿Es ese el código completo? –

+0

@DanielRoseman Segundo, siento que no estaba claro. –

Respuesta

25

Usted ha definido una url que coincide con /query/, pero está probando /query. Django está redireccionando a la url con la barra al final porque APPEND_SLASH=True en su configuración.

Es posible que desee cambiar su examen para:

response = self.client.post('/query/', {}) 
+0

Sí, esto explica mucho! Gracias :) Funciona ahora. –

Cuestiones relacionadas