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

2024-03-29 06:01:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

避免这种行为的好方法是什么?你知道吗


Tags: 数据方法imageself实体url类型save