2013-10-15 2 views
1
class Record(ndb.Model): 
    notes = ndb.TextProperty() 
    last_updated = ndb.DateTimeProperty(auto_now=True) 

Часть Испытательная установка блока:Как переопределить поле метки времени для целей единичного тестирования?

record2 = Record()  
# trying to set the last_updated timestamp to a previous date 
record2.last_updated = previous_date 

record2.put() 
#after saving it, the timestamp is back to today's date 

Поэтому я не могу эмулировать старые записи для моего модульного тестирования. Как переопределить это поле без изменения модели?

+0

Из документов - 'Можно переопределить значение для свойства с помощью auto_now_add = True, но не для одного с auto_now = True. Автоматическое значение не генерируется до тех пор, пока объект не будет записан; то есть эти параметры не обеспечивают динамические значения по умолчанию. (Эти данные отличаются от старого db API.) 'Вам, вероятно, придется возиться с моделью, настраиваясь для тестов. –

+0

@TimHoffman Почему бы не иметь это как ответ вместо комментария? – Lipis

+0

Я часто это делаю, когда я не удовлетворен этим ответом :-) –

ответ

2

От docs

Это можно переопределить значение для свойства с auto_now_add=True, но не для одного с auto_now=True. Автоматическое значение не генерируется до тех пор, пока объект не будет записан; то есть эти параметры не обеспечивают динамические значения по умолчанию. (Эти данные отличаются от старого db API.)

Смежные вопросы