【发布时间】:2017-04-22 17:56:57
【问题描述】:
我被一个错误所困扰,我没有正确检查实体是否已放入数据存储。它与事务以及上下文缓存和内存缓存特别混淆。
考虑这个实体,其中每个方法的目的是增加 n 并将实体保存到数据存储:
class MyEntity(ndb.Model):
n = ndb.IntegerProperty()
def inc(self):
self.n += 1
# self.put() # oops, forgot to put the entity
@staticmethod
@ndb.transactional
def inc_trans(key):
x = key.get()
x.n += 1
# x.put() # oops, forgot to put the entity
还有这些单元测试:
def testInc(self):
x = MyEntity(n=0)
x.put()
x.inc()
x = x.key.get()
self.assertEqual(x.n, 1)
def testIncTrans(self):
x = MyEntity(n=0)
x.put()
MyEntity.inc_trans(x.key)
x = x.key.get()
self.assertEqual(x.n, 1)
我应该在这些测试中添加什么以确保实体已实际保存到数据存储中? (即,我们没有检查存储在上下文缓存或内存缓存中的值吗?)添加
ndb.get_context().clear_cache()
在调用inc 和inc_trans 之后进行单元测试?
【问题讨论】:
标签: python unit-testing google-app-engine transactions app-engine-ndb