Как издеваться над _auto_now?

У меня есть класс ndb.model с полем created_on, для которого auto_now_add установлено значение true.

created_on = ndb.DateTimeProperty(auto_now_add=True, indexed=True)

Я тестирую метод create(), который создает объекты этого класса. Вот что я по существу делаю в тесте:

  • Создайте объект с помощью тестируемого метода create().
  • Достать объект.
  • Сравните с заглушкой (созданной без использования метода create()).

Проблема в том, что я не могу установить 'created_on' так, чтобы он соответствовал заглушке.

Как мне издеваться над чем-то подобным? (Есть ли в бэкэнде API, который я могу издеваться?)


comment
Обратите внимание, что значение полностью устанавливается в коде Python; API хранилища данных не имеет к этому никакого отношения.   -  person Daniel Roseman    schedule 22.09.2015


Ответы (1)


В прошлом я использовал freezegun, чтобы издеваться над подобными вещами. Это будет выглядеть примерно так:

@freezegun.freeze_time('2015-9-21')
def test():
    assert ModelClass.create(...) == ModelClass(...)

Если вам это не нравится, вы можете вызвать to_dict для двух моделей и вывести атрибут 'created_on'.

person mgilson    schedule 21.09.2015