ben*_*opy 4 python unit-testing mocking celery
鉴于celery任务被调用,使用autospec模拟函数的最简单方法是什么?
例如在python 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')
Run Code Online (Sandbox Code Playgroud)
何时应该引发异常,因为芹菜'延迟'方法将接受任何参数.
您实际上是在尝试测试Task.run()函数的参数.
请参阅以下文档:http : //celery.readthedocs.org/en/latest/userguide/tasks.html#custom-task-classes http://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')
Run Code Online (Sandbox Code Playgroud)
然后你应该在输出中看到你期望的错误
TypeError: <lambda>() takes exactly 4 arguments (2 given)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |