gpt4 book ai didi

python - 测试 ndb 实体是否已放入数据存储

转载 作者:太空宇宙 更新时间:2023-11-03 15:20:54 24 4
gpt4 key购买 nike

我遇到了一个错误,我没有正确检查实体是否已放入数据存储中。事务以及上下文缓存和内存缓存尤其令人困惑。

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

调用 incinc_trans 后进行单元测试?

最佳答案

做了更多研究后,我发现我们可以强制 get 不使用任何缓存,如下所示:

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

在测试中使用无缓存 get 似乎是一种可行的方法。

关于python - 测试 ndb 实体是否已放入数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43562655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com