gpt4 book ai didi

django Postgres IntegrityError

转载 作者:行者123 更新时间:2023-11-29 11:22:16 25 4
gpt4 key购买 nike

有人可以向我解释如何正确测试 Postgres 数据库错误,尤其是 IntegrityError。例如我有下一个测试:

class TestSlugs(TestCase):
# This slug must be unique
b = BookPublisher(slug=self.duplicate_slug)
self.assertRaises(IntegrityError, b.save)

#check if there's only one BookPublisher
self.assertEquals(BookPublisher.objects.count(), 1)

在这里它捕获了 IntegrityError 但随后所有操作都会失败,因为这就是 postgres 的工作方式,好的。我在文档中看到我可以使用 transaction.rollback() 但在哪里:在测试中还是在 save() 方法中?

此外,我不喜欢手动编写回滚的想法,为什么 django 不能尝试保存,如果失败了 - 给我 IntegrityError 让我继续工作。

我正在使用 django 1.1

最佳答案

不要更改 save() 方法,因为您希望它在正常操作下传播。您应该在您的测试类中捕获异常并在那里回滚(请注意,由于您正在测试事务,因此您必须子类化 TransactionalTestCase 而不是普通的 TestCase)。

关于django Postgres IntegrityError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1305535/

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