2016-04-06 36 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'工作) –

相關問題