如何使用 PyCharm 在 django 测试中 运行 芹菜

How to run celery in django tests using PyCharm

我正在尝试测试我的 Django 应用程序功能。
我的一些任务正在使用 Celery。
如何使用 PyCharm 在我的测试环境中 运行 芹菜?

使用 mock 库将解决您的问题。

要在不测试 celery 的情况下进行单元测试,您可能需要模拟您的 @shared_task 装饰器

from unittest import mock

@mock.patch('celery.shared_task', lambda *args, **kwargs: lambda func: func)
def test_celery_unit()
    from tasks import mytask
    result = mytask() # could be call just as a function

我假设您正在使用 shared_task 装饰器并且 运行 将任务设置为 function_name.delay()

这可以通过添加一个条件来测试,如果 运行 在本地(或通过测试)并在生产中使用芹菜,则 运行 是任务。这也允许在不使用 celery 的情况下在本地 运行 服务器,这样可以更容易调试和维护。

PRODUCTION = False

if PRODUCTION:
    some_task.delay()
else:
    some_task()

也可以创建一个装饰器来做同样的事情,它更漂亮,但维护起来可能更复杂?