django - 如何启动 Django 可重用应用程序的测试?

标签 django testing django-testing

我可以在不将此应用合并到项目中的情况下为我的可重用 Django 应用启动测试吗?

我的应用程序使用了一些模型,因此需要提供(TEST_)DATABASE_* 设置。我应该在哪里存储它们以及我应该如何启动测试?

对于 Django 项目,我可以使用 manage.py test 运行测试;当我在我的独立应用程序中使用 django-admin.py test 时,我得到:

Error: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

此处的最佳做法是什么?

最佳答案

Django (>= 1.4) test runner 的正确用法如下:

import django, sys
from django.conf import settings

settings.configure(DEBUG=True,
               DATABASES={
                    'default': {
                        'ENGINE': 'django.db.backends.sqlite3',
                    }
                },
               ROOT_URLCONF='myapp.urls',
               INSTALLED_APPS=('django.contrib.auth',
                              'django.contrib.contenttypes',
                              'django.contrib.sessions',
                              'django.contrib.admin',
                              'myapp',))

try:
    # Django < 1.8
    from django.test.simple import DjangoTestSuiteRunner
    test_runner = DjangoTestSuiteRunner(verbosity=1)
except ImportError:
    # Django >= 1.8
    django.setup()
    from django.test.runner import DiscoverRunner
    test_runner = DiscoverRunner(verbosity=1)

failures = test_runner.run_tests(['myapp'])
if failures:
    sys.exit(failures)

DjangoTestSuiteRunner 和 DiscoverRunner 具有大部分兼容的接口(interface)。

有关更多信息,您应该查阅“定义测试运行程序”文档:

关于django - 如何启动 Django 可重用应用程序的测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3841725/

相关文章:

python - Django,在渲染模板之前执行templatetag

testing - 测试期间的日志记录和预期异常

python - Django 1.8 中的登录测试用例失败

python - 没有数据库迁移和syncdb的Django测试用例

Django 表单 'autocomplete' ='off' 不起作用

django - 为 QuerySet 手动选择数据库会覆盖 Django 中的数据库路由器方法吗?

Django:循环中的包含标签是否导致我的渲染缓慢?

testing - 如何用示例向非技术测试人员解释排序(数字、字典顺序和整理)?

testing - 如何测试使用WebRTC实现的通信器(视频、声音、麦克风)

python - Django 中测试信号的基础知识