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?

Était-ce utile?

La 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

Autres conseils

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top