每个测试用例的Django唯一设置

时间:2015-06-02 11:03:02

标签: 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'

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的值适当更改?或者我做错了什么?

0 个答案:

没有答案