如何在不运行单元测试期间创建的Celery任务的情况下捕获?
例如,我想写一个看起来像这样的测试:
def test_add_user_avatar(): add_user_avatar(…) tasks = get_deferred_tasks(…) assert_equal(tasks[0],ResizeImageTask(…))
具体来说,我不想使用ALWAYS_EAGER – 我的一些任务很慢,并且有自己的一组测试用例.我特别想断言我的前端代码正在创建正确的任务.
解决方法
我的情况类似,我正在使用的策略是模拟调用Celery任务,然后检查运行后对这些模拟的调用.这可以在这里工作吗?
from … import ResizeImageTask class NonQueuedTestCase(…): def setUp(self): """ Patch out ResizeImageTask's delay method """ super(NonQueuedTestCase,self).setUp() self.patcher = patch.object(ResizeImageTask,'delay',autospec=True) self.m_delay = self.patcher.start() def tearDown(self): self.patcher.stop() super(NonQueuedTestCase,self).tearDown() def test_add_user_avatar(self): # Make call to front-end code add_user_avatar(…) # Check delay call was made self.m_delay.assert_called_once_with(…)
您可以在没有后端(内存或其他方式)的情况下运行这些测试,在前端代码和任务代码之间保持干净的中断,并且可以测试多个代码路径,这些路径通常会在没有运行的情况下排队长时间运行的任务.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。