创建测试数据库时,复制现有数据库中的所有数据。 Django的

时间:2013-10-04 15:24:36

标签: python database django testing

当我运行测试时,我希望在创建测试数据库时复制包含所有数据的现有数据库。

直到我的一位同事使用POSTGIS_TEMPLATE = DATABASES['default']['NAME']进行测试,我才想到这一点。 因为我们对项目使用GeoDjango所以POSTGIS_TEMPLATE存在,因为让测试运行器知道要使用哪个postgis数据库模板。 当他如上所述定义它时,它实际上也创建了包含所有数据的测试数据库。这对我们来说有点方便,所以我们不需要创建夹具文件。 但是如果我们不能对不使用GeoDjango的项目做同样的事情。

所以我在这里有两个问题: 使用项目数据库中已存在的数据是否是个好主意? (对于某些测试,我可能需要先删除某个表的所有数据,但在很多情况下,我们会测试非空数据集。) 如果这不是一个坏主意,对于不使用GeoDjango的项目,无论如何我可以设置它来复制现有数据库中的数据吗?

1 个答案:

答案 0 :(得分:0)

  

在项目数据库中使用预先存在的数据是否是一个好主意?

不 - 它可能会发生变化,导致测试中出现奇怪的不确定行为。

最安全的选择是使用./manage.py dumpdata转储现有数据,然后将其作为固定装置加载到各个测试中。 This documentation描述了如何。