我正在尝试为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_first_test
,那么所有测试用例都会以SOME_KEY = FIRST_VALUE
运行。
有没有办法确保django重新初始化每个测试用例的设置,以便SOME_KEY
的值适当更改?或者我做错了什么?