Тестирование с частичной базой данных Django - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь выполнить модульное тестирование новой функции, которую я написал в не очень большом проекте Django (с некоторыми устаревшими функциями, которые я не могу изменить в настоящее время).

Схема базы данных стала очень большой иочень переплетены.Каждый тест, который мы в конечном итоге пишем, должен пройти очень долгий процесс настройки базы данных со многими внешними ключами, которые не нужны большинству модульных тестов.Но инфраструктура Django заставит нас настроить их, поскольку одна модель имеет внешний ключ к другому, который затем будет иметь один к другому и т. Д.

Я пытался вообще не использовать базу данных, чтобыЗапустите мои модульные тесты, имитируя большинство взаимодействий с базой данных (например: objects.filter, objects.get, save и т. д.).

Это работает, но я не могу получить данные подтверждения о различных атрибутах - более конкретнопример:

@mock.patch.object(MyObject, 'save')
def testing_something_that_saves(self, mock_save_function):
    # a bit of setup stuff
    mock_save_function.return_value = True
    call_test_function()
    self.assertEquals(len(mock_save_function.mock_calls), 1)

Но как в этом случае я могу - или я проверю различные MyObject, которые будут сохранены?Вызов функции save() не принимает параметры - но я хотел бы проверить, что сохраняемый объект имеет правильные значения.

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

Stack:

  • Python2.7.15
  • Джанго 1.11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...