test_backends.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from __future__ import absolute_import, unicode_literals
  2. import pytest
  3. from case import patch
  4. from celery import backends
  5. from celery.backends.amqp import AMQPBackend
  6. from celery.backends.cache import CacheBackend
  7. from celery.exceptions import ImproperlyConfigured
  8. class test_backends:
  9. @pytest.mark.parametrize('url,expect_cls', [
  10. ('amqp://', AMQPBackend),
  11. ('cache+memory://', CacheBackend),
  12. ])
  13. def test_get_backend_aliases(self, url, expect_cls, app):
  14. backend, url = backends.get_backend_by_url(url, app.loader)
  15. assert isinstance(backend(app=app, url=url), expect_cls)
  16. def test_unknown_backend(self, app):
  17. with pytest.raises(ImportError):
  18. backends.get_backend_cls('fasodaopjeqijwqe', app.loader)
  19. @pytest.mark.usefixtures('depends_on_current_app')
  20. def test_default_backend(self, app):
  21. assert backends.default_backend == app.backend
  22. def test_backend_by_url(self, app, url='redis://localhost/1'):
  23. from celery.backends.redis import RedisBackend
  24. backend, url_ = backends.get_backend_by_url(url, app.loader)
  25. assert backend is RedisBackend
  26. assert url_ == url
  27. def test_sym_raises_ValuError(self, app):
  28. with patch('celery.backends.symbol_by_name') as sbn:
  29. sbn.side_effect = ValueError()
  30. with pytest.raises(ImproperlyConfigured):
  31. backends.get_backend_cls('xxx.xxx:foo', app.loader)