У меня есть функция как
def getEvents(eid, request):
......
Теперь я хочу написать unit test для указанной функции отдельно (без вызова представления).
Итак, как я могу назвать выше в TestCase
. Возможно ли создать запрос?
У меня есть функция как
def getEvents(eid, request):
......
Теперь я хочу написать unit test для указанной функции отдельно (без вызова представления).
Итак, как я могу назвать выше в TestCase
. Возможно ли создать запрос?
См. это решение:
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)
Если вы используете клиент тестирования django (from django.test.client import Client
), вы можете получить доступ к запросу из объекта ответа следующим образом:
from django.test.client import Client
client = Client()
response = client.get(some_url)
request = response.wsgi_request
или если вы используете django.TestCase
(from django.test import TestCase, SimpleTestCase, TransactionTestCase
), вы можете получить доступ к экземпляру клиента в любом тестовом файле, просто набрав self.client
:
response = self.client.get(some_url)
request = response.wsgi_request
Используйте RequestFactory
, чтобы создать фиктивный запрос.
Вы имеете в виду def getEvents(request, eid)
правильно?
С помощью Django unittest вы можете использовать from django.test.client import Client
для запроса.
Смотрите здесь: Проверить клиента
Ответ @Secator является префектом, поскольку он создает макет объекта, который действительно предпочтителен для действительно хорошего unittest. Но в зависимости от вашей цели может быть проще просто использовать инструменты тестирования Django.
Вы можете использовать клиентский тест 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
для более подробной информации
https://docs.djangoproject.com/en/1.11/topics/testing/tools/#overview-and-a-quick-example