当我运行测试时,我希望在创建测试数据库时复制包含所有数据的现有数据库。
直到我的一位同事使用POSTGIS_TEMPLATE = DATABASES['default']['NAME']
进行测试,我才想到这一点。
因为我们对项目使用GeoDjango
所以POSTGIS_TEMPLATE
存在,因为让测试运行器知道要使用哪个postgis数据库模板。
当他如上所述定义它时,它实际上也创建了包含所有数据的测试数据库。这对我们来说有点方便,所以我们不需要创建夹具文件。
但是如果我们不能对不使用GeoDjango
的项目做同样的事情。
所以我在这里有两个问题:
使用项目数据库中已存在的数据是否是个好主意? (对于某些测试,我可能需要先删除某个表的所有数据,但在很多情况下,我们会测试非空数据集。)
如果这不是一个坏主意,对于不使用GeoDjango
的项目,无论如何我可以设置它来复制现有数据库中的数据吗?
答案 0 :(得分:0)
在项目数据库中使用预先存在的数据是否是一个好主意?
不 - 它可能会发生变化,导致测试中出现奇怪的不确定行为。
最安全的选择是使用./manage.py dumpdata
转储现有数据,然后将其作为固定装置加载到各个测试中。 This documentation描述了如何。