Bel*_*iaf 5 python django-testing celery python-unittest django-tests
使用覆盖率来查看需要测试的内容,覆盖率显示接下来必须进行测试:
send_alert.apply_async()
我知道这是芹菜任务,但是有什么方法可以测试代码行吗?
其余代码用于理解测试逻辑:
class SomeView(GenericAPIView)
def post(self, request, *args, **kwargs):
#some code
if not value:
send_alert.apply_async()
# response
# not if Response
Run Code Online (Sandbox Code Playgroud)
由于第一个答案而编写的测试
@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)
Run Code Online (Sandbox Code Playgroud)
我还检查了任务完成后的情况,print('Tasks Passed')
我看到任务已通过的消息,但测试失败并出现错误AssertionError: False is not true
我假设您正在使用 Django,因为它是这样标记的。
用以下内容装饰你的测试:
@override_settings(CELERY_EAGER=True)
def test_foo(self):
# Make your post
Run Code Online (Sandbox Code Playgroud)
或者,如果您只是想测试它是否被调用。
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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2269 次 |
最近记录: |