Как я могу сравнить реальные данные в БД и идеальные?

0

Я хочу протестировать и сравнить лучшие 3 реальных данных в db и идеальных. Я написал в test.py как

from django.test import TestCase
from app.models import User


# Create your tests here.
class UserModelTests(TestCase):
    def test_is_empty(self):
        saved_user = User.objects.first(3)
        self.assertEqual(saved_user, XXXX)

У пользователя save_user есть 'name': Tom,'user_id': 1,'nationarity': America, 'dormitory':'A', 'group': 3 'name': Bob,'user_id': 2,'nationarity': China, 'dormitory':'B', 'group': 4 ・・・・, поэтому я хочу сравнить Tom & 1 & America & A & 3, набираемые мной и реальными данными db. Я действительно не могу понять, как писать вместо XXX.Data, 4 вида я смутился. Как я должен это писать?

Теги:

1 ответ

0
Лучший ответ

Экземпляры модели Django сравниваются с первичным ключом, поэтому тестирование с экземпляром User здесь не будет работать. Самое простое решение здесь - использовать Queryset.values(...) для извлечения необработанных записей как dicts и сравнения с dicts.

Кроме того, User.objects.first(3) просто не будет работать (поднимет TypeError) - Queryset.first() не принимает аргументов и возвращает один экземпляр модели. Чтобы получить только первые три записи (на основе заказа по умолчанию для модели), вы должны нарезать свой User.objects.all()[:3], т. User.objects.all()[:3].

IOW вы хотите:

users = list(User.object.values()[:3])
expected = [
  {'name': 'Tom','user_id': 1,'nationarity': 'America'}, # etc
  {'name': 'Bob','user_id': 2,'nationarity': 'China', # etc
  # etc
  ]
self.assertEqual(expected, users)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню