Question

Im trying to test some functions that include a call for celery tasks. the tasks involves a call to 3rd party websites and i need to avoid it during tests.

Any idea how to disable all celery tasks during tests?

Was it helpful?

Solution 2

Usually the "good method" imply doing Mocks. https://docs.python.org/3/library/unittest.mock.html

So you'll return example response from the site.

You can check on class declaration debug state and if True replace the class by the corresponding Mock

OTHER TIPS

You can patch the Task delay function

   patch("celery.app.task.Task.delay", return_value=1)
   patch("celery.app.task.Task.apply_async", return_value=1)

If you are using pytest, you can add this in 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)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top