Как высмеять фреймворк Django REST RawQuery?Python

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Как высмеять фреймворк Django REST RawQuery?

Сообщение Гость »


Я разрабатываю API BBS с использованием платформы Django REST. Я пытался имитировать RawQuery, потому что тестовая база данных Django не работает, но и мой макетный код тоже не работает.

models.py

из моделей импорта django.db # Здесь преобразуется Snake_case в CamelCase, поскольку клиенты используют CamelCase. Класс Board(models.Model): boardID: models.IntegerField = models.IntegerField(primary_key=True) имя: models.CharField = models.CharField(max_length=32) путь: models.CharField = models.CharField(max_length=64) @staticmethod защита get(язык): д = ''' ВЫБЕРИТЕ board_id КАК boardID, имя, путь ИЗ bbs.boards ГДЕ язык = %s ЗАКАЗАТЬ ПО order_in_lang ''' return Board.objects.raw(q, [lang]) serializers.py

из bbs_api.bbs_api модели импорта из сериализаторов импорта rest_framework класс BoardSerializer(serializers.HyperlinkedModelSerializer): класс Мета: модель = модели.Доска поля = '__all__' views.py

из bbs_api.bbs_api модели импорта, сериализаторы из rest_framework импортировать наборы представлений из rest_framework.response Ответ на импорт класс EnBoardsViewSet(viewsets.ModelViewSet): def get(сам, запрос): raw_query_set = models.Board.get('en') boards_serializer = сериализаторы.BoardSerializer(raw_query_set, многие = True) вернуть ответ (boards_serializer.data) tests.py

из django.db.models.query import RawQuerySet из django.http импортировать HttpRequest из django.test импортировать TestCase из bbs_api.bbs_api модели импорта, сериализаторы, представления из rest_framework.request Запрос на импорт из rest_framework.serializers импортируйте BaseSerializer, ListSerializer из rest_framework.utils.serializer_helpers импортировать ReturnList из патча импорта unittest.mock, PropertyMock импортировать обратную трассировку класс EnBoardsViewSetTest(TestCase): @patch('rest_framework.serializers.BaseSerializer.data') def test_get_returns_en_boards(self, fake_data): ожидается = [ {'lang': 'en', 'name': 'News', 'path': '/boards/en/news', «минуты_to_live»: 1440, «order_in_lang»: 1}, {'lang': 'en', 'name': 'Политика', 'path': '/boards/en/politics', «минуты_to_live»: 1440, «order_in_lang»: 2}, ] издевательские_данные = PropertyMock (return_value = ожидаемое) req = Запрос (HttpRequest()) view_set = представления.EnBoardsViewSet() рез = view_set.get(req) результат = рез.данные self.assertEqual(результат, ожидаемый) Я пытался высмеять rest_framework.serializers.BaseSerializer.data, потому что похоже, что это свойство наконец выполняет необработанный запрос. Я запускаю ./mange.py test и получаю
Найдено 1 тест(ов). Создание тестовой базы данных для псевдонима «по умолчанию»… Проверка системы не выявила проблем (0 отключено). Ф =============================================== ==================== ОШИБКА: test_get_returns_en_boards (bbs_api.bbs_api.tests.EnBoardsViewSetTest) -------------------------------------------------- -------------------- Traceback (последний вызов последний): Файл "/usr/lib/python3.10/unittest/mock.py", строка 1379, исправлен return func(*newargs, **newkeywargs) Файл «/home/admin01/project/bbs/bbs_api/bbs_api/bbs_api/tests.py», строка 31, в test_get_returns_en_boards self.assertEqual(результат, ожидаемый) AssertionError: [] != [{'lang': 'en', 'name': 'News', 'path': '/[169 символов]: 2}] -------------------------------------------------- -------------------- Выполнил 1 тест за 0,001 с. НЕУДАЧА (ошибка=1) Уничтожение тестовой базы данных для псевдонима «по умолчанию»… Окружающая среда [*]Ubuntu 22.04.2 LTS [*]Питон 3.10.12 [*]Джанго 4.2.1 [*]djangorestframework 3.14.0
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»