【发布时间】:2018-12-06 09:21:45
【问题描述】:
我尝试为这个简单的函数编写单元测试。基本上,它从 Slack 接收有效负载,然后构建一条消息,然后使用 API 将此消息发送给用户。
@slack_messages.on_pattern('(?i)^help$')
def handle_help_message(event, body, match):
message = build_help_message()
Slack(event['team_id']).send_message(body['user'], **message)
def build_help_message():
text = "Hello"
return {
'text': text,
'attachments': [
build_basics(),
build_controls()
]
}
我写了这个测试,但是对于这么简单的功能来说它看起来太复杂了。如何让我的测试更简单?
class TestMesssageHandlers(TestCase):
@mock.patch('slango.slack.Slack.send_message')
@mock.patch('slango.slack.Slack.__init__')
@mock.patch('apps.slackapp.help.handlers.build_help_message')
def test_handle_help_message(self, build_message_mock, init_mock,
send_message_mock):
init_mock.return_value = None
build_message_mock.return_value = {
'text': mock.sentinel.text,
'attachments': mock.sentinel.attachments
}
event = {
'team_id': 'TEAMID',
'event': {
'text': 'help',
'user': 'U111111'
}
}
handle_help_message(event, event['event'])
init_mock.assert_called_with(event['team_id'])
send_message_mock.assert_called_with(
event['event']['user'], **build_message_mock.return_value)
【问题讨论】:
标签: python unit-testing testing refactoring