我如何autospec模拟芹菜函数



给定一个正在调用的芹菜任务,用autospec模拟函数的最简单方法是什么?

例如,在python 2.7.5中,这段代码可以通过:

from mock import create_autospec
from celery import task
@task
def function(a, b, c):
    pass
mock_function = create_autospec(function)
mock_function.delay('wrong arguments')

当它应该引发异常时,因为芹菜的'delay'方法将接受任何参数。

您实际上是在测试Task.run()函数的参数。

查看下面的文档:http://celery.readthedocs.org/en/latest/userguide/tasks.html#custom-task-classeshttp://celery.readthedocs.org/en/latest/reference/celery.app.task.html celery.app.task.Task.run

使用提供给任务的参数调用

run()。如果您想确保在测试期间提供了正确的参数,那么请执行以下操作:

from mock import create_autospec
from celery import task
@task
def function(a, b, c):
    pass
mock_function = create_autospec(function)
mock_function.run('wrong arguments')

然后您应该在输出

中看到您期望的错误
TypeError: <lambda>() takes exactly 4 arguments (2 given)

相关内容

  • 没有找到相关文章

最新更新