Подтвердить что ты не робот

Как получить объект запроса в модульном тестировании django?

У меня есть функция как

def getEvents(eid, request):
    ......

Теперь я хочу написать unit test для указанной функции отдельно (без вызова представления). Итак, как я могу назвать выше в TestCase. Возможно ли создать запрос?

4b9b3361

Ответ 1

См. это решение:

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)

Ответ 2

Если вы используете клиент тестирования 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

Ответ 3

Используйте RequestFactory, чтобы создать фиктивный запрос.

Ответ 4

Вы имеете в виду def getEvents(request, eid) правильно?

С помощью Django unittest вы можете использовать from django.test.client import Client для запроса.

Смотрите здесь: Проверить клиента

Ответ @Secator является префектом, поскольку он создает макет объекта, который действительно предпочтителен для действительно хорошего unittest. Но в зависимости от вашей цели может быть проще просто использовать инструменты тестирования Django.