python - test - pruebas unitarias django
¿Cómo obtener objeto de solicitud en django unit testing? (5)
Tengo una función como
def getEvents(eid, request):
......
Ahora quiero escribir la prueba de unidad para la función anterior por separado (sin llamar a la vista). Entonces, ¿cómo debo llamar a lo anterior en TestCase
. ¿Es posible crear solicitud?
Puedes usar el cliente de prueba django
from django.test import Client
c = Client()
response = c.post(''/login/'', {''username'': ''john'', ''password'': ''smith''})
response.status_code
response = c.get(''/customer/details/'')
response.content
para más detalles
https://docs.djangoproject.com/en/1.11/topics/testing/tools/#overview-and-a-quick-example
Quieres decir def getEvents(request, eid)
¿verdad?
Con Django unittest, puede usar el from django.test.client import Client
para realizar la solicitud.
Vea aquí: Test Client
La respuesta de @ Secator es prefecta ya que crea un objeto simulado que realmente se prefiere para una buena prueba de unidad. Pero dependiendo de su propósito, podría ser más fácil usar las herramientas de prueba de Django.
Si está utilizando el cliente de prueba de django ( from django.test.client import Client
cliente from django.test.client import Client
) puede acceder a la solicitud desde el objeto de respuesta de esta manera:
from django.test.client import Client
client = Client()
response = client.get(some_url)
request = response.wsgi_request
o si está usando django.TestCase
( from django.test import TestCase, SimpleTestCase, TransactionTestCase
) puede acceder a la instancia del cliente en cualquier caso de prueba simplemente escribiendo self.client
:
response = self.client.get(some_url)
request = response.wsgi_request
Utilice RequestFactory
para crear una solicitud ficticia.
Vea esta solución :
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)