在Django中运行python manage.py测试时强制使用新数据库,可以通过以下步骤实现:
# settings.py
# 默认数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'production_db',
'USER': 'username',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
}
}
# 测试数据库配置
DATABASES['test'] = {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test_db',
'USER': 'username',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
}
--keepdb
参数来保留测试数据库,但这会导致测试数据在每次运行测试时保留。如果想要每次测试都使用新的数据库,可以使用--rebuild
参数。python manage.py test --rebuild
unittest
或pytest
等测试框架编写测试用例。在测试用例中,可以通过设置DATABASES
字典的'NAME'
属性来指定使用的数据库。# tests.py
from django.test import TestCase
class MyTestCase(TestCase):
def setUp(self):
# 设置测试数据库
self._old_db_name = settings.DATABASES['default']['NAME']
settings.DATABASES['default']['NAME'] = 'test_db'
def tearDown(self):
# 恢复原始数据库
settings.DATABASES['default']['NAME'] = self._old_db_name
def test_something(self):
# 测试代码
pass
这样,在运行测试时,Django会使用配置的测试数据库来执行测试代码,保证每次测试都使用新的数据库。同时,可以根据具体需求在测试用例中进行数据库操作和断言验证。
推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云云服务器CVM。
领取专属 10元无门槛券
手把手带您无忧上云