gpt4 book ai didi

使用 AWS RDS 的 Django `TransactionTestCase` 测试用例非常慢

转载 作者:行者123 更新时间:2023-12-04 17:51:18 25 4
gpt4 key购买 nike

我正在尝试设置 Django 测试以使用 AWS RDS 作为 Postgres 数据库后端(测试在 Heroku CI 上执行,它不允许您创建和销毁测试数据库)。测试正在运行,但使用 TransactionTestCase 的测试用例非常慢(有时长达一分钟,而在不使用 RDS 时只有几分之一秒)。我在与我的 Heroku 部署(欧盟/爱尔兰)相同的区域中使用 RDS,并且基于 TestCase 类的测试用例照常运行。知道是什么原因造成的吗?

最佳答案

TransactionTestCaseTestCase 相比非常慢。我已经开始从 TestCase 继承,然后将每个 celery 和 db 调用 block 放在 transaction.atomic(): block 中,并在该 block 外进行查询和断言。您获得了 TestCase 的速度。

例子:

with transaction.atomic():
Foo.objects.create(...)
Bar.objects.get_or_create(...)
self.assertEqual(Foo.objects.count(), 1)
self.assertTrue(Bar.objects.first().trueproperty)

关于使用 AWS RDS 的 Django `TransactionTestCase` 测试用例非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44539308/

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