Python 每个测试用例的Django唯一设置
Python 每个测试用例的Django唯一设置,python,django,unit-testing,django-settings,Python,Django,Unit Testing,Django Settings,我正在尝试为django插件编写一些测试。我希望每个测试用例都使用自己的设置运行,但django似乎只加载一次设置,并将其用于所有测试用例 以下是我所拥有的: 我创建了一个runtests.py,用于加载测试运行程序并运行测试 #!/usr/bin/env python import sys import django from django.conf import settings from django.apps import apps APP_NAME = 'name' settin
我正在尝试为django插件编写一些测试。我希望每个测试用例都使用自己的设置运行,但django似乎只加载一次设置,并将其用于所有测试用例 以下是我所拥有的:
我创建了一个
runtests.py
,用于加载测试运行程序并运行测试
#!/usr/bin/env python
import sys
import django
from django.conf import settings
from django.apps import apps
APP_NAME = 'name'
settings.configure(
...
# common settings here
...
)
if hasattr(django, 'setup'):
django.setup()
from django.test.utils import get_runner
TestRunner = get_runner(settings)
test_runner = TestRunner()
failures = test_runner.run_tests([APP_NAME])
if failures:
sys.exit(failures)
然后我用一些测试创建了一个tests.py
from django.test import TestCase, override_settings
class MyTests(TestCase):
@override_settings(SOME_KEY=FIRST_VALUE)
def test_first_test(self):
...
@override_settings(SOME_KEY=SECOND_VALUE)
def test_second_test(self):
...
@override_settings(SOME_KEY=THIRD_VALUE)
def test_third_test(self):
...
我知道Django不能保证测试执行顺序,我对此并不担心。我遇到的问题是,如果先执行test\u first\u test
,那么所有测试用例都将使用SOME\u KEY=first\u VALUE
运行
是否有办法确保django重新初始化每个测试用例的设置,以便SOME_KEY
的值适当地更改?还是我做错了什么