我正在尝试编写一个测试,以确保根据某些验证(或由多个字段组成的唯一键)不能两次将实体添加到Google云数据存储中。
举一个例子,假设我要保存一个简单的image_url
和一个type
。现在只能有一个具有特定URL和特定类型的图像。
这很容易检查(至少到目前为止,我确认我的数据存储区未找到具有此类值的实体)。
但是在编写测试时,由于延迟,我得到的结果不一致。像这样:
def test_foo_bar(self):
self.datastore.save_image(self.image_metadata)
with self.assertRaises(ValueError):
self.datastore.save_image(self.image_metadata)
现在的问题似乎是,当我检查某个实体是否已经存在时,刚刚创建的实体还不存在(?)。因此它不会引发错误,不会产生重复,并且测试失败。到目前为止,获得某种一致性的唯一方法是添加一个time.sleep(1)
来给它更多的时间,但是仍然有时候测试没有通过(尽管大多数时候都可以通过)。我个人不喜欢这种不一致。
什么是避免这种行为的好方法?