当我运行测试时,我希望它在创建测试数据库时复制包含所有数据的现有数据库。
在我的一位同事使用POSTGIS_TEMPLATE = DATABASES['default']['NAME']
进行测试之前,我从未想过。
因为我们在项目中使用GeoDjango
,所以存在POSTGIS_TEMPLATE
可以让测试运行者知道要使用哪个postgis数据库模板。
当他如上所述定义它时,它实际上也会创建包含所有数据的测试数据库。对我们来说这很方便,因此我们不需要创建夹具文件。
但是,如果我们不能对不使用GeoDjango
的项目执行相同的操作。
所以我在这里有两个问题:
使用项目数据库中已经存在的数据是个好主意吗? (对于某些测试,我可能需要先删除某个表的所有数据,但是在许多情况下,我们将针对非空数据集进行测试。)
如果这不是一个坏主意,那么对于不使用GeoDjango
的项目,是否可以将其设置为从现有数据库复制数据?
最佳答案
使用项目数据库中的预先存在的数据是一个好主意吗?
否-可能会更改,从而导致测试中出现奇怪的不确定性行为。
最安全的选择是使用./manage.py dumpdata
转储现有数据,然后将其作为夹具加载到各个测试中。 This documentation描述如何。
关于python - 创建测试数据库时,请复制现有数据库中的所有数据。 Django的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19185013/