当使用sqlite for django时,您可以从源代码控制中检出您的应用程序并运行单元测试,而无需执行任何特殊操作。但是当你切换到使用mysql作为你的数据库时,你突然需要创建一个数据库。为什么我需要这样做?这特别奇怪,因为单元测试甚至不会使用该数据库,而是通过在名称前加上'test _'来创建自己的数据库。
答案 0 :(得分:1)
这是因为Django加载了settings.py文件以运行测试套件。您可以创建单独的settings.py文件,并在运行测试时使用它。以django网站为例:
--settings=test_sqlite
假设您有一个名为test_sqlite的settings.py文件。
请访问此处获取更多信息:
https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/
答案 1 :(得分:1)
如果经常运行测试,请在settings.py中添加以下代码:
import sys
if 'test' in sys.argv:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'test'
}
}
答案 2 :(得分:1)
我使用几乎相同的测试解决方案,比如@SimonBächler,而不是真正的数据库
'NAME': 'test',
我用
'NAME':' :memory:,
因此它使用内存来处理测试操作,这就是为什么它并不总是创建/更新/删除数据库。