我有2个脚本。
它使用蝗虫运行负载测试,以dict格式收集输出,然后将其传递给第二个脚本。
第二个脚本将接受一个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)
答案 0 :(得分:0)
对于两个功能send_to_db
和send_it
,单元测试意义不大:两个功能仅由与其他组件/功能的交互组成。由于单元测试旨在发现那些可以在隔离的单元中找到的错误,因此没有单元测试可以找到的错误。这样的交互主导代码中的错误更多地在于以下方面:您是否在以正确的顺序调用正确的函数,并以正确的参数值调用?是否以正确的顺序调用参数,以预期的方式传递结果/返回值?和格式?而且,所有这些问题的答案都不能在隔离的代码中找到,而只能在各个组件真正相互作用的代码中找到-这是集成测试而不是单元测试。
您的script-2中唯一对单元测试有意义的函数是take_only_needed
:此函数执行实际的计算。它还具有很好的属性,它仅具有(可能)不会导致测试问题的依赖关系,因此可能不需要模拟。
结论:对take_only_needed
进行单元测试,其他人则跳过单元测试并在交互测试期间对其进行测试。