【发布时间】:2016-04-04 18:17:52
【问题描述】:
我希望能够在测试中断言我的代码为被修改的实体调用了Model.put()。不幸的是,似乎有一些缓存正在进行,例如这段代码:
from google.appengine.ext import ndb
class MyModel(ndb.Model):
name = StringProperty(indexed=True)
text = StringProperty()
def update_entity(id, text):
entity = MyModel.get_by_id(id)
entity.text = text
# This is where entity.put() should happen but doesn't
通过此测试:
def test_updates_entity_in_datastore(unittest.TestCase):
name = 'Beartato'
entity = MyModel(id=12345L, name=name, text=None)
text = 'foo bar baz'
update_entity(entity.key.id(), text)
new_entity = entity.key.get() # Doesn't do anything, apparently
# new_entity = entity.query(MyModel.name == name).fetch()[0] # Same
assert new_entity.text == text
如果我真的不想这样做,因为在现实世界中,update_entity 实际上不会更改数据存储区中的任何内容。
使用 Nose、datastore_v3_stub 和 memcache_stub。
【问题讨论】:
标签: python google-app-engine google-cloud-datastore app-engine-ndb