Python 2.7、セロリ 3.0.24、およびモック 1.0.1 を使用します。私はこれを持っています:
class FancyTask(celery.Task):
@classmethod
def helper_method1(cls, name):
"""do some remote request depending on name"""
return 'foo' + name + 'bar'
def __call__(self, *args, **kwargs):
funcname = self.name.split()[-1]
bigname = self.helper_method1(funcname)
return bigname
@celery.task(base=FancyTask)
def task1(*args, **kwargs):
pass
@celery.task(base=FancyTask)
def task2(*args, **kwargs):
pass
helper_method1
いずれかのタスクのテスト中にパッチを適用するにはどうすればよいですか?
私は次のようなことを試しました:
import mock
from mymodule import tasks
class TestTasks(unittest.TestCase):
def test_task1(self):
task = tasks.task1
task.helper_method1 = mock.MagickMock(return_value='42')
res = task.delay('blah')
task.helper_method1.assert_called_with('blah')
そしてテストは失敗しています。元の関数は呼び出される関数です。いいえ、この質問は役に立ちませんでした。