请帮助了解单元测试的用例

时间:2019-07-18 11:40:25

标签: python unit-testing

我有2个脚本。

  1. 它使用蝗虫运行负载测试,以dict格式收集输出,然后将其传递给第二个脚本。

  2. 第二个脚本将接受一个dict作为来自script-1的输入,对其进行解析,创建一个json有效负载,并将数据发送到api端点,并将其存储在某些db中。

该应用程序从第一个脚本开始运行,并且所有功能均正常运行。我从未从事过单元测试。我的问题是: 这里可以使用单元测试来测试什么,以保持构建应用程序的适当标准。

脚本-1。 (假设蝗虫已经在奔跑)

def on_slave_report(data):
    send_to_db(data)

events.slave_report += on_slave_report

脚本2。

def send_to_db(data):
     send_it(take_only_needed(data))

def take_only_needed(data):
     needed=data[stats]
     payload = json.dumps({'stats' : needed, 'bla': bla})
     return payload

def send_it(payload):
     requests.request("POST", url, data=payload, headers=headers)

1 个答案:

答案 0 :(得分:0)

对于两个功能send_to_dbsend_it,单元测试意义不大:两个功能仅由与其他组件/功能的交互组成。由于单元测试旨在发现那些可以在隔离的单元中找到的错误,因此没有单元测试可以找到的错误。这样的交互主导代码中的错误更多地在于以下方面:您是否在以正确的顺序调用正确的函数,并以正确的参数值调用?是否以正确的顺序调用参数,以预期的方式传递结果/返回值?和格式?而且,所有这些问题的答案都不能在隔离的代码中找到,而只能在各个组件真正相互作用的代码中找到-这是集成测试而不是单元测试。

您的script-2中唯一对单元测试有意义的函数是take_only_needed:此函数执行实际的计算。它还具有很好的属性,它仅具有(可能)不会导致测试问题的依赖关系,因此可能不需要模拟。

结论:对take_only_needed进行单元测试,其他人则跳过单元测试并在交互测试期间对其进行测试。