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

时间:2017-06-14 08:22:05

标签: django unit-testing amazon-web-services heroku amazon-rds

我正在尝试设置Django测试以将AWS RDS用作Postgres数据库后端(测试在Heroku CI上执行,不允许您创建和销毁测试数据库)。测试正在运行,但使用TransactionTestCase的测试用例非常慢(有时长达一分钟,而不使用RDS则为几分之一秒)。我在与Heroku部署(EU / Ireland)相同的区域中使用RDS,并且基于TestCase类的测试用例像往常一样运行。 可能导致这种情况的任何想法?

1 个答案:

答案 0 :(得分:0)

TransactionTestCaseTestCase相比非常慢。我已经开始从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)