gpt4 book ai didi

Python 单元测试 task.apply_async()

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:36 25 4
gpt4 key购买 nike

使用覆盖率来查看必须测试的内容,并且覆盖率显示旁边必须要测试的内容:send_alert.apply_async()

我知道是celery任务,但是有什么办法可以测试这行代码吗?

理解测试逻辑的其余代码:

class SomeView(GenericAPIView)
def post(self, request, *args, **kwargs):
#some code
if not value:
send_alert.apply_async()
# response
# not if Response

根据第一个答案编写的测试

    @patch('event.views.send_alert')
def test_send_alert(self, mock_send):
data = {some data for post}
response = self.client.post('/api/{0}/mettings/'.format(self.user), data)
print(response.json())
self.assertTrue(mock_send.called)

我还检查了在任务 print('Tasks Passed') 之后我看到任务通过的消息,但测试失败并出现错误 AssertionError: False is not true

最佳答案

我假设您正在使用 Django,因为它是这样标记的。

装饰你的测试:

@override_settings(CELERY_EAGER=True)
def test_foo(self):
# Make your post

或者如果您只是想测试它是否被调用。

from mock import patch

@patch('your_module.your_file.send_alert.apply_async')
def test_foo(self, mock_send):
# make your post with "value" set to True
self.assertTrue(mock_send.called)

关于Python 单元测试 task.apply_async(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49982389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com