2012-04-23 13 views

Respuesta

64

Ver this solution:

from django.utils import unittest 
from django.test.client import RequestFactory 

class SimpleTest(unittest.TestCase): 
    def setUp(self): 
     # Every test needs access to the request factory. 
     self.factory = RequestFactory() 

    def test_details(self): 
     # Create an instance of a GET request. 
     request = self.factory.get('/customer/details') 

     # Test my_view() as if it were deployed at /customer/details 
     response = my_view(request) 
     self.assertEqual(response.status_code, 200) 
+4

Este código en realidad ha sido incluida en Django desde la versión 1.3. Ver [la documentación] (https://docs.djangoproject.com/en/1.4/topics/testing/#django.test.client.RequestFactory) aquí. –

+1

Si veo esto correctamente, esa solicitud falsa de la fábrica no se filtra a través de middleware (s). –

+3

Documentación actualizada [enlace] (https://docs.djangoproject.com/en/1.9/topics/testing/advanced/#example) – dragonx

0

¿Quiere decir def getEvents(request, eid) ¿verdad?

Con Django unittest, puede usar el from django.test.client import Client para realizar una solicitud.

Ver aquí: Test Client

@ respuesta de Secator es perfecta, ya que crea un objeto de burla que en realidad es el preferido para un muy buen unittest. Pero dependiendo de su propósito, podría ser más fácil simplemente usar las herramientas de prueba de Django.

11

Utilice RequestFactory para crear una solicitud ficticia.

+1

Gracias por el enlace al documento –

13

Si está utilizando cliente de prueba Django (from django.test.client import Client) se puede acceder a la solicitud del objeto respuesta como esta:

from django.test.client import Client 

client = Client() 
response = client.get(some_url) 
request = response.wsgi_request 

o si está utilizando django.TestCase (from django.test import TestCase, SimpleTestCase, TransactionTestCase) se puede acceder a la instancia del cliente, en cualquier caso de prueba con sólo self.client escribir:

response = self.client.get(some_url) 
request = response.wsgi_request 
Cuestiones relacionadas