我正在尝试在我的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)我的测试目前位于我的app文件夹中名为tests
的文件夹中,每个文件都名为test_models.py
。但是,在添加CelerySuiteTestRunner
时,根本没有运行任何测试 - 我可以添加失败的测试,但它们不会失败。
3)但是,如果我删除该文件夹并在app文件夹中添加一个tests.py
文件,则该文件中的任何内容都将运行。 (如果我保留tests
文件夹,它将不会在tests.py
文件中运行测试。)
我只是想把我芹菜相关任务的测试添加到我的应用程序中。谁能解释一下这里发生了什么?
谢谢!
答案 0 :(得分:1)
我假设你使用的是Django 1.6,changed the default test runner。 CeleryTestSuiteRunner
继承自Django的旧DjangoTestSuiteRunner
,它运行所有已安装应用程序的测试,包括Django提供的应用程序,但不会发现tests
模块之外的测试。
您可以使用新的CeleryTestSuiteRunner
在您自己的测试运行器中重新实现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)