Django可重用应用程序的自定义settings.py

时间:2013-06-26 16:59:07

标签: django django-testing django-apps

我有一个可重复使用的Django应用程序,我将其导入另一个项目。我希望能够运行该应用程序的测试,这意味着我只需要我自己的settings.py文件进行测试。

运行这些测试的可接受方式是什么?我注意到一些项目创建了一个runtests.py文件来调整Django设置并使用Django测试运行器。

我还注意到内部公司项目要求开发人员创建一个新的设置文件app_tests_settings.py并使用manage.py运行测试:

./manage.py run tests --settings=app_tests_settings

哪种方式最好,还有其他方法可以运行使用自定义设置的特定应用测试吗?

更新:应用程序需要特定的数据库后端,因为它使用PostGIS

1 个答案:

答案 0 :(得分:0)

您可以覆盖TestCase的setUp方法中的设置。

https://docs.djangoproject.com/en/dev/topics/testing/overview/#overriding-settings

更新

来自flatpages(https://github.com/django/django/blob/master/django/contrib/flatpages/tests/test_csrf.py)的一些代码:

from django.test.utils import override_settings


@override_settings(
    LOGIN_URL='/accounts/login/',
    MIDDLEWARE_CLASSES=(
        'django.middleware.common.CommonMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
    ),
    TEMPLATE_DIRS=(
        os.path.join(os.path.dirname(__file__), 'templates'),
    ),
    SITE_ID=1,
)
class FlatpageCSRFTests(TestCase):
    fixtures = ['sample_flatpages', 'example_site']
    ...