Pregunta

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?

¿Fue útil?

Solución 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

Otros consejos

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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top