【问题标题】:How to run celery in django tests using PyCharm如何使用 PyCharm 在 django 测试中运行 celery
【发布时间】:2020-01-28 20:32:51
【问题描述】:

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

【问题讨论】:

    标签: python django unit-testing pycharm celery


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      要在不测试 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
      

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

        • 你的假设是正确的,我应该提到这些细节!
        猜你喜欢
        • 2013-12-22
        • 1970-01-01
        • 2016-02-09
        • 2018-09-10
        • 2014-01-15
        • 1970-01-01
        • 2015-05-28
        • 1970-01-01
        • 2015-08-06
        相关资源
        最近更新 更多