2014-02-05 51 views
1

我想在我的Django應用程序中測試一些芹菜功能,但我甚至無法得到基本的測試系統。Django芹菜測試轉輪做非常奇怪的事情

當我關注你的一切說,並添加TEST_RUNNER = 'djcelery.contrib.test_runner.CeleryTestSuiteRunner'我的設置文件,一些不尋常的事情發生的底部,當我嘗試用manage.py test測試:

1)一系列測試我從來沒有寫過似乎運行。以前,我有18個測試全部通過。現在,我進行的測試,我得到這個:

................................................................................ 
.....................x.......................................................... 
................................................................... 
---------------------------------------------------------------------- 
Ran 227 tests in 0.802s 

OK (expected failures=1) 
Destroying test database for alias 'default'... 

2)目前我的測試一直是我的應用程序文件夾內的一個名爲tests文件夾中,名爲每個文件,例如,test_models.py。但是,在添加CelerySuiteTestRunner後,這些測試都沒有運行 - 我可以添加失敗的測試並且不會失敗。

3)但是,如果我擺脫夾和應用程序文件夾中的文件運行添加單個tests.py文件,任何東西。 (如果我將tests文件夾留在原地,它將不會在tests.py文件中運行測試。)

我只是試圖將我的芹菜相關任務的測試添加到我的應用程序中。任何人都可以解釋這裏發生了什麼?

謝謝!

回答

1

我假設你使用Django 1.6,其中changed the default test runner。 繼承自Django舊的DjangoTestSuiteRunner,它運行所有已安裝應用程序的測試,包括Django提供的應用程序,但不發現tests模塊以外的測試。

你可以使用新的DiscoverRunner預期,例如:

from django.test.runner import DiscoverRunner 
from djcelery.contrib.test_runner import _set_eager 

class CeleryDiscoverRunner(DiscoverRunner): 
    def setup_test_environment(self, **kwargs): 
     _set_eager() 
     super(CeleryDiscoverRunner, self).setup_test_environment(**kwargs) 
+0

我假設你的意思是重新實現CeleryTestSuiteRunner(而不是DjangoTestSuiteRunner),它會發現你的測試重新實現在自己的測試運行? 在這兩種情況下 - 它的工作 - 謝謝!我絕對不會想到這一點。非常感激! :) – Benjamin

+0

你說得對,回答固定。 –