我试图测试一些功能,包括调用 celery 任务。这些任务涉及调用 3rd 方网站,我需要在测试期间避免它。
知道如何在测试期间禁用所有 celery 任务吗?
我试图测试一些功能,包括调用 celery 任务。这些任务涉及调用 3rd 方网站,我需要在测试期间避免它。
知道如何在测试期间禁用所有 celery 任务吗?
您可以修补任务延迟功能
patch("celery.app.task.Task.delay", return_value=1)
patch("celery.app.task.Task.apply_async", return_value=1)
如果您使用的是 pytest,您可以在 conftest.py 中添加:
@pytest.fixture(autouse=True)
def mock_celery_delay(mocker):
mocker.patch("celery.app.task.Task.delay", return_value=1)
mocker.patch("celery.app.task.Task.apply_async", return_value=1)
通常“好方法”意味着做 Mocks。 http://www.voidspace.org.uk/python/mock/
因此,您将从站点返回示例响应。
您可以检查类声明调试状态,如果 True 用相应的 Mock 替换类