为什么';t Django';s测试命令是否识别某些选项?

为什么';t Django';s测试命令是否识别某些选项?,django,django-testing,django-manage.py,Django,Django Testing,Django Manage.py,我正在Django 1.8.12上运行一个项目,我希望在两次运行之间保留测试数据库。即使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]

我正在Django 1.8.12上运行一个项目,我希望在两次运行之间保留测试数据库。即使
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
以类似的方式失败


我是不是遗漏了什么?如何将这些选项传递给命令?

我遇到了类似的问题,问题是在项目设置中将TEST\u RUNNER设置为
django\u nose
。因此,在../settings/local.py中,注释或删除以下内容:

TEST\u RUNNER='django\u nose.nosetsuiterunner'


允许使用--keepdb开关。

您在测试中使用的是
django.test.TestCase
,还是
unittest.TestCase
?我使用的是
django.test.TestCase
,但我认为这并不重要,因为它们很可能从未被调用过,错误会在调用之前终止执行。切换到
unittest.TestCase
或定义
类TestCase(object):pass
在使用
-k
选项时会产生相同的错误消息。您可以在其他应用程序中运行测试,还是它们也会失败?在同一个Django项目中的其他应用程序中运行测试时,我也会遇到同样的错误。事实上,-keepdb似乎是Django默认testrunner的一个选项。然而,我更喜欢使用NoseTests,因此使用
REUSE\u DB=1 python manage.py test
来运行测试对我来说很有用。将答案标记为正确,因为它帮助我找到了适合我的解决方案。较新版本的
django_nose
通过
--keepdb
选项,因此另一个解决方案是升级Python包(例如,对于我来说,将django nose从1.4.1升级到1.4.4允许
--保持PDB
工作)