【发布时间】:2011-01-23 19:35:58
【问题描述】:
如果您在 Django 中设置了数据库,如何让 TestRunner 使用“实时”数据库(根据 settings.py 中的 DATABASE_* 设置)而不是在临时测试数据库上运行它们。
例如,我想在settings.py 中指定的live 数据库上运行以下测试:
import unittest
from example import models
class DBDriverTest(unittest.TestCase):
db testDriver(self):
"Connect to the live database and drop in sample value."
m = models.MyModel('hello')
m.save() # ... save to the live database from settings.py
目前上面的代码只会保存到已经构建好的测试数据库中。这是非常有限的,因为我的应用程序有多个在数据库上工作的并行进程——而且我的单元测试将是不完整的(并且不连贯的),而无法将内容泵入“实时”数据库并查看它们在短暂睡眠后所处的位置。
我能想到的两个潜在选择是:
插入 Django API 以了解如何在 settings.py 中“手动”连接到数据库
与“实时”数据库建立低级连接并手动填充它
先验是有问题的,因为它依赖于 Django 的公共 API 下的东西。后者是有问题的,因为它放弃了与数据库无关的 Django 数据库 API,并且需要更多的手动操作。
感谢您的想法和意见。
布赖恩
【问题讨论】:
标签: django unit-testing django-models django-database