如何在python中处理异步测试?

时间:2018-11-15 21:28:01

标签: python python-3.x google-cloud-datastore

我正在尝试编写一个测试,以确保根据某些验证(或由多个字段组成的唯一键)不能两次将实体添加到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)来给它更多的时间,但是仍然有时候测试没有通过(尽管大多数时候都可以通过)。我个人不喜欢这种不一致。

什么是避免这种行为的好方法?

0 个答案:

没有答案