Встречается на собеседованиях • сегодня

Как протестировать, изменилось ли поле в БД

Для проверки изменения поля в БД можно использовать несколько подходов:

  1. Прямое сравнение в тесте:
python
def test_field_update(db):
    obj = MyModel.objects.create(field='old_value')
    obj.field = 'new_value'
    obj.save()
    
    updated_obj = MyModel.objects.get(pk=obj.pk)
    assert updated_obj.field == 'new_value'
  1. Использование refresh_from_db (Django):
python
obj.refresh_from_db()
assert obj.field == 'expected_value'
  1. Проверка через update:
python
updated_count = MyModel.objects.filter(
    pk=obj.pk, 
    field='new_value'
).update(field='new_value')
assert updated_count == 1

Для ORM SQLAlchemy аналогично можно использовать session.refresh().

Важные моменты:

  • Учитывайте возможные race conditions
  • Проверяйте именно то поле, которое должно измениться
  • Для datetime-полей учитывайте часовые пояса
  • В транзакционных тестах не забывайте про commit/rollback
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы