मैं App इंजन के NDB साथ DateTimeProperty के लिए एक फिल्टर का परीक्षण करने के कोशिश कर रहा हूँ लेकिन मैं इसे auto_now करने के लिए सेट है?ऐप इंजन एनडीबी में डेटटाइमप्रोपर्टी का परीक्षण कैसे करें?
वहाँ एक रास्ता इकाई परीक्षण के लिए इस के आसपास पाने के लिए है?
उदाहरण:
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' के परिणाम को असाइन करने के लिए पर्याप्त होगा, और फिर कुंजी का उपयोग कर इकाई प्राप्त करें? – RocketDonkey
@RocketDonkey हाँ, मैं अपने फ़िल्टर को सत्यापित करने के लिए देख रहा हूँ। मैंने लुकअप को शामिल करने के लिए अपना उदाहरण विस्तारित किया है। – wag2639