1

我一直在一个错误,我没有正确地检查一个实体被放到数据存储。它对事务和上下文缓存和内存缓存特别困惑。测试ndb实体被放到数据存储区

考虑这个实体,其中每种方法的目的是为了增加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) 

我要补充这些测试以确保实体实际上已被保存到数据存储中? (即,我们没有检查存储在环境关联的缓存或内存缓存?值)是否足够来电来incinc_trans后添加

ndb.get_context().clear_cache() 

的单元测试?

回答

1

做了进一步的研究之后,我发现,我们可以强制get不使用任何缓存是这样的:

x = x.key.get(use_cache=False, use_memcache=False) 

使用无缓存得到测试好像要走的路。

相关问题