Django Celery测试运行者做着非常奇怪的事情



我正在尝试在我的 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)

相关内容

  • 没有找到相关文章

最新更新