【发布时间】:2015-11-04 09:18:57
【问题描述】:
如何使用来自其他数据库(例如:生产数据库)的值填充在测试 Django 测试用例时创建的测试数据库。
详细说明:
当我运行以下命令时,
$ python manage.py test
为测试目的创建了一个测试数据库,但其中没有任何数据。我希望创建的测试数据库填充一些初始值。
谢谢..
【问题讨论】:
标签: python django unit-testing
如何使用来自其他数据库(例如:生产数据库)的值填充在测试 Django 测试用例时创建的测试数据库。
详细说明:
当我运行以下命令时,
$ python manage.py test
为测试目的创建了一个测试数据库,但其中没有任何数据。我希望创建的测试数据库填充一些初始值。
谢谢..
【问题讨论】:
标签: python django unit-testing
您可以使用dumpdata 从您的实时数据库中获取包含数据的文件。
然后您可以自动从文件加载数据以进行测试(请参阅Django tests):
from django.test import TestCase
from django.core.management import call_command
class Tests(TestCase):
@classmethod
def setUpTestData(cls):
call_command('loaddata', 'myfile', verbosity=0)
【讨论】:
您可以使用django fixtures 来填充您的测试数据库。
为您的生产数据库创建一个夹具并将其写入某个文件
python manage.py dumpdata > backup.json
您可以使用此命令填充您的测试数据库
python manage.py loaddata backup.json
如果你想通过运行python manage.py test 来做到这一点,那么你应该编写自定义django-admin commands
【讨论】:
您想查看fixtures。这是文档页面的链接:https://docs.djangoproject.com/en/1.8/howto/initial-data/
基本上,您可能希望转储当前数据库以进行测试,因此您可以执行以下操作:
python manage.py dumpdata
然后你想把你的文件放在一个目录中,Django 会寻找夹具。您可以使用FIXTURE_DIRS 变量在设置中指定它,也可以使用默认值。默认值只是在您的 Django 应用程序中的 fixtures 目录中。
【讨论】: