我正在尝试设置Django测试以将AWS RDS用作Postgres数据库后端(测试在Heroku CI上执行,不允许您创建和销毁测试数据库)。测试正在运行,但使用TransactionTestCase
的测试用例非常慢(有时长达一分钟,而不使用RDS则为几分之一秒)。我在与Heroku部署(EU / Ireland)相同的区域中使用RDS,并且基于TestCase
类的测试用例像往常一样运行。
可能导致这种情况的任何想法?
答案 0 :(得分:0)
TransactionTestCase
与TestCase
相比非常慢。我已经开始从TestCase
继承,然后将celery和db调用的每个块放在transaction.atomic():
块中,并在该块之外进行查询和断言。您得到TestCase
的速度。
示例:
with transaction.atomic():
Foo.objects.create(...)
Bar.objects.get_or_create(...)
self.assertEqual(Foo.objects.count(), 1)
self.assertTrue(Bar.objects.first().trueproperty)