Случай Django APITest не возвращает ничего в запросе get

Я разрабатываю API с помощью Django, и я также хочу протестировать его, но у меня есть некоторые проблемы с этим. Мне нужно проверить, что по заданному URL возвращается то, что я ожидаю, и я хочу сделать это с помощью APITestCase из django rest framework.

Конечная точка - это нечто подобное: http://localhost:5000/api/v1/rest_of_url/

Когда я набираю его в браузере, он возвращает что-то похожее: {"count": 1, "next": null, "previous": null, "results": [{"stuff": 3, "stuff2": "adf", "stuff3": "asdf", "stuff4": "ff"}]}

Итак, чтобы проверить это, я написал следующий код в Django:

class TargetApiTestCase(APITestCase):

    def test_get(self):
        response = self.client.get("/api/v1/rest_of_url/", format='json')
        print(response)
        print(response.content)
        print(response.status_code == status.HTTP_200_OK)

В ответ я получаю следующий вывод из операторов prints:

<JsonResponse status_code=200, "application/json">
b'null'
True

Но мне нужно получить некоторые данные, чтобы проверить. Я знаю, что после этого я должен запросить базу данных для проверки и использовать self.assertEqual, но пока моя проблема заключается в получении данных через get

Возможно, это всего лишь проблема настроек.

Я попытался потребовать responde.data, но он ответил с ошибкой.

Пожалуйста, кто-нибудь может мне помочь? Спасибо

Я не смог ничего получить, потому что база данных, используемая для тестирования, является только кэшированной базой данных, созданной и удаленной сразу после выполнения теста.

Итак, если вы хотите получить или использовать какие-то данные, вам нужно поместить их в базу данных с помощью метода startUp.

Примером для Django может быть размещение их с помощью некоторого запроса Django ORM, а затем их проверка, как в следующем примере:

class TestApiEndpoint(APITestCase):

    name = "test"
    surname = "test"
    description = "Very long text as description"

    def setUp(self):
        CustomUser.objects.create(
            name=self.name,
            surname=self.surname,
            description=description,
        )

    def test_get(self):
        response = self.client.get("/api/v1/rest_of_url/", format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        data = response.json()["results"]

        self.assertEqual(len(data), 1)
        self.assertEqual(data[0]['name'], self.name)
        ....
Вернуться на верх