Sto provando a testare un filtro per DateTimeProperty con NDB di App Engine ma l'ho impostato su auto_now?Come testare DateTimeProperty in App Engine NDB?
C'è un modo per aggirare questo per il test dell'unità?
Esempio:
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)
Purtroppo, quando ho commesso al datastore con test.put(), utilizza il tempo in cui è stato messo().
Alcune idee: sovrascrive '_pre_put_hook()' o imposta 'MyModel.timestamp' su un normale' ndb.DateTimeProperty' se sei in una prova. – mjibson
Il problema principale è che, poiché sta registrando un diverso timestamp, e stai cercando un modo per filtrare in quel momento esatto per verificare che il filtro funzioni? In altre parole, sarebbe sufficiente assegnare il risultato di 'test.put()' a 'test_key', e quindi ottenere l'entità usando la chiave? – RocketDonkey
@RocketDonkey sì, sto cercando di verificare il mio filtro. Ho ampliato il mio esempio per includere la ricerca. – wag2639