【问题标题】:Why doesn't Django's test command recognize some options?为什么 Django 的测试命令不能识别某些选项?
【发布时间】:2016-04-06 07:39:07
【问题描述】:

我正在 Django 1.8.12 上运行一个项目,我想在运行之间将测试数据库保留为 described in the documentation。即使test 命令本身在帮助文本中列出了-k/--keepdb 选项,使用它也会失败:

vagrant@vagrant /vagrant/project (master) $ python manage.py test -k myapp.tests.testcase
nosetests myapp.tests.testcase -k --verbosity=1
Usage: manage.py [options]

manage.py: error: no such option: -k

vagrant@vagrant /vagrant/project (master) $ python manage.py test --keepdb myapp.tests.testcase
nosetests myapp.tests.testcase --keepdb --verbosity=1
Usage: manage.py [options]

manage.py: error: no such option: --keepdb

使用其他选项调用相同的命令,例如-q--failfast 工作正常。另一方面,其他一些列出的选项(例如 --no-color)以类似的方式失败。

我在这里遗漏了什么吗?如何将这些选项传递给命令?

【问题讨论】:

  • 你是在测试中使用django.test.TestCase,还是unittest.TestCase
  • 我正在使用django.test.TestCase,但我认为这并不重要,因为它们很可能永远不会被调用,错误会在此之前终止执行。当使用-k 选项时,切换到unittest.TestCase 或定义class TestCase(object): pass 会导致相同的错误消息。
  • 您可以在其他应用程序中运行测试,还是它们也会失败? Django 1.8 source 确实知道。
  • 尝试在同一个 Django 项目中的其他应用程序中运行测试时,我确实遇到了同样的错误。

标签: django django-testing django-manage.py


【解决方案1】:

我遇到了类似的问题,问题是在项目设置中将 TEST_RUNNER 设置为 django_nose。所以在 ../settings/local.py 中,注释掉或删除这个:

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'

允许使用 --keepdb 开关。

【讨论】:

  • 确实,--keepdb 似乎是 Django 默认测试运行程序的一个选项。然而,我更喜欢使用 NoseTests,所以使用 REUSE_DB=1 python manage.py test 运行测试对我来说是诀窍。将答案标记为正确,因为它帮助我找到了适合我的解决方案。
  • django_nose 的更新版本通过 --keepdb 选项,因此另一种解决方案是升级该 Python 包(例如,对我来说,允许将 django-nose 从 1.4.1 升级到 1.4.4 --keepdb上班)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
相关资源
最近更新 更多