2016-04-06 111 views
2

我在Django 1.8.12上运行一个项目,我想保留运行之间的测试数据库为described in the documentation。即使test命令本身列出帮助文本的-k/--keepdb选项,使用它失败:为什么Django的测试命令不能识别某些选项?

[email protected] /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 

[email protected] /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)也以类似方式失败。

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

+0

你在测试中使用'django.test.TestCase'还是'unittest.TestCase'? – C14L

+0

我正在使用'django.test.TestCase',但我不认为它很重要,因为它们很可能永远不会被调用,错误会在此之前终止执行。当使用'-k'选项时,切换到'unittest.TestCase'或者定义'class TestCase(object):pass'会导致相同的错误信息。 –

+0

你可以在其他应用程序中运行测试,还是他们也失败? [Django 1.8源代码](https://github.com/django/django/blob/1.8.12/django/test/runner.py#L55)确实知道它。 – C14L

回答

3

我有一个类似的问题,并且问题是在项目设置中将TEST_RUNNER设置为django_nose。因此,在../settings/local.py,注释掉或删除此:

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'

允许使用的--keepdb开关。

+0

事实上,--keepdb似乎是Django默认testrunner的一个选项。不过我更喜欢使用NoseTests,所以使用'REUSE_DB = 1 python manage.py test'运行测试对我来说是个诀窍。 标记答案是正确的,因为它帮助我找到适合我的解决方案。 –

+0

'django_nose'的更新版本通过'--keepdb'选项,所以另一种解决方案是升级该Python包(例如,对于我,将'django-nose'从1.4.1升级到允许的'1.4.4' keepdb'工作) –

相关问题