我想用App Engine的NDB測試DateTimeProperty的過濾器,但我把它設置爲auto_now?如何測試App Engine NDB中的DateTimeProperty?
有沒有辦法解決這個單元測試?
例子:
class MyModel(ndb.Model)
timestamp = ndb.DateTimeProperty(auto_now)
name = ndb.StringProperty()
def testMyModelFilter(self):
test1 = MyModel()
test1.timestamp = datetime.datetime.now() - datetime.timedelta(hours=2)
test1.put()
test2 = MyModel()
test2.timestamp = datetime.datetime.now() - datetime.timedelta(hours=1)
test2.put()
hour_ago = datetime.datetime.now() - datetime.timedelta(hours=1)
fetched = MyModel.query().filter(MyModel.timestamp < hour_ago).fetch(
None, keys_only=True)
不幸的是,當我把它提交到數據存儲與test.put(),它使用的時間,當它被放在()。
一些想法:如果你正在測試,可以覆蓋'_pre_put_hook()'或者設置'MyModel.timestamp'到一個正常的'ndb.DateTimeProperty'。 – mjibson
由於它記錄了不同的時間戳,並且您正在尋找一種方法來過濾確切的時間以驗證過濾器的工作原理,這是主要問題嗎?換句話說,將test.put()的結果賦給test_key就足夠了,然後使用key來獲取實體? – RocketDonkey
@RocketDonkey是的,我正在驗證我的過濾器。我已經擴展了我的示例以包含查找。 – wag2639