我正在尝试在我的 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
文件中运行测试。
我只是想把与芹菜相关的任务的测试添加到我的应用程序中。 谁能解释一下这里发生了什么?
谢谢!
我假设你使用的是Django 1.6,它改变了默认的测试运行器。CeleryTestSuiteRunner
继承了 Django 的旧DjangoTestSuiteRunner
,它从所有已安装的应用程序运行测试,包括 Django 提供的应用程序,但不发现tests
模块之外的测试。
您可以使用新DiscoverRunner
在自己的测试运行器中重新实现CeleryTestSuiteRunner
,这将按预期发现您的测试,例如:
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)