-1

我有一个 JSON 数组(地图列表),类似于:

def listOfMap = [[TESTCASE:1, METHOD:'CLICK', RESULT:'PASS'], 
      [TESTCASE:2, METHOD:'CLICK', RESULT:'FAIL'], 
      [TESTCASE:3, METHOD:'CLICK', RESULT:'FAIL'], 
      [TESTCASE:4, METHOD:'TYPETEXT', RESULT:'FAIL']]

我想在一个列中生成一个具有唯一方法名称的报告,并在另一列中生成它们的失败百分比并导出到 csv/excel/html。报告应采用以下模式

报告 :

1)实现这一目标的最短的常规代码是什么?
2) 我们如何将数据导出到 excel/csv?

我有这些可用的代码片段,但无法连接这些点

a) 获取唯一方法列表 listOfMap.METHOD.unique()

b) 获取每个 METHOD 的运行次数(这里我想遍历上面的输出) listOfMap.count { map -> map.METHOD == 'CLICK'}

c) 从上面的列表 listOfMap.count { map -> map.METHOD == 'CLICK' && map.RESULT == 'FAIL' } 中获取所有方法的 FAIL 计数

现在我要计算:(每种方法的失败结果计数/每种方法的总运行次数 * 100)

4

1 回答 1

2

像这样的东西:

def percentage (map){
     (map.FAIL ?: 0) / ((map.PASS ?: 0) + (map.FAIL ?: 0)) * 100
}

def result = listOfMap.groupBy{it.METHOD}
                      .collectEntries{[(it.key) : percentage(it.value.countBy{it.RESULT})]}

def outputCsv = new File('/pathToReport/report.csv')
outputCsv.write "S.No;MethodName;Failture %\n"
result.eachWithIndex{ entry, index ->
   outputCsv << "${index+1};${entry.key};${entry.value}\n" 
于 2018-01-26T07:16:51.803 回答