Django 1.7 - 如何抑制"(1_6.W001)某些项目单元测试可能无法按预期执行."?

San*_*nta 39 python django python-2.x python-2.7 django-1.7

我有一个Django应用程序,其部分最初是用Django 1.2编写的,并且该应用程序已经升级到1.7.升级到1.7后,我收到以下警告python manage.py check:

System check identified some issues:

WARNINGS:
?: (1_6.W001) Some project unittests may not execute as expected.
    HINT: Django 1.6 introduced a new default test runner. It looks like this project was generated using Django 1.5 or earlier. You should ensure your tests are all running & behaving as expected. See https://docs.djangoproject.com/en/dev/releases/1.6/#new-test-runner for more information.
Run Code Online (Sandbox Code Playgroud)

错误消息提到URL确实详细说明了已经发生的更改,但它没有提供有关为何触发此警告或如何禁止它的任何提示.尽管警告消息引用了Django 1.6,但它只在升级到Django 1.7后才开始出现

我已经检查过在Django 1.7下运行相同数量的单元测试,就像在Django 1.6.1下运行一样.

对于那些感兴趣的人,有问题的应用程序是一个名为Kompassi的事件管理系统,可以在Github上找到.

San*_*nta 45

找到一篇明确指出的博客文章

TEST_RUNNER = 'django.test.runner.DiscoverRunner'
Run Code Online (Sandbox Code Playgroud)

in settings.py将阻止此警告发生.

  • 此特定检查尝试使用某些启发式方法检测某个配置,不幸的是,它可能会导致一些误报.这个显式告诉算法它是一个django 1.7+项目.非常感谢. (2认同)

Vin*_*rup 9

您可以使用SILENCED_SYSTEM_CHECKS设置静音各个系统检查警告.

关于如何找到触发此警告的原因的另一个问题,我能找到的唯一地方是查看源代码.


小智 9

看起来开发人员已决定删除此警告:

https://code.djangoproject.com/ticket/23469


Iva*_*huk 8

如果您的测试一切正常,您可以通过执行以下一个(或全部)步骤来关闭警告:

  1. SITE_ID如果您不再使用站点框架,请从您的设置中删除.

  2. BASE_DIR变量添加到您的设置中.

  3. MANAGERS如果您不使用它,请从您的设置中删除列表.

  4. 删除XFrameOptionsMiddleware设置中的中间件.(无论如何,它在Django 1.6+中默认启用)

  5. 删除自定义TEMPLATE_LOADERSADMINS如果您不需要它们(您通常这样做,所以除非您知道自己在做什么,否则不要这样做).

这是当前启发式(Django 1.7.3)检查的两件事,以便检测您的项目是否由Django <1.6生成.