我如何在不运行单元测试中创建的芹菜任务的情况下捕获?
例如,我想编写一个看起来像这样的测试:
def test_add_user_avatar():
add_user_avatar(…)
tasks = get_deferred_tasks(…)
assert_equal(tasks[0], ResizeImageTask(…))
具体来说,i 不想使用ALWAYS_EAGER
- 我的某些任务非常慢,并且有自己的测试案例。我特别想断言正确的任务是由我的前端代码创建的。
我的情况相似,我正在使用的策略是嘲笑芹菜任务的呼叫,然后在运行后检查对这些模拟的呼叫。这个可以在这里工作吗?
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(…)
您可以在没有后端的情况下运行这些测试(在内存或其他方面),在前端代码和任务代码之间保持干净的断裂,并且可以测试通常会在没有它的情况下排队长期运行的多个代码路径跑步。