更好的功能测试方法

时间:2018-12-06 09:21:46

标签: python unit-testing testing refactoring

我尝试为此简单功能编写单元测试。基本上,它从Slack接收有效负载,然后生成一条消息,然后使用API​​将其发送给用户。

def directoryEmpty(String dir) {
    !new File(dir).list().any()
}

我写了这个测试,但是对于这样一个简单的函数来说,它看起来太复杂了。如何使测试更简单?

@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()
        ]
    }

1 个答案:

答案 0 :(得分:1)

单元测试用于发现那些可以在隔离代码中检测到的错误。但是,您的示例代码主要是与Slack组件进行交互。也就是说,如果这段代码中存在错误,则它们将与您如何调用Slack构造函数和send_message方法有关。

但是,您不会在Slack类的模拟中找到这些错误:想象send_message方法的正确命名参数不是textattachments,而是{{1 }}和txt-对于您的模拟,您将永远不会注意到此问题,因为您的模拟反映了您对其他组件如何工作的误解。

结论是,对于这种代码,单元测试不是正确的方法,而集成测试则是正确的方法。如果您需要更多示例,也可以看看这些问题,它们的方向相似:Mock a series of interdependent callsShould Unit Tests test against the REST API?

相关问题