katalon写一个Groovy脚本,利用java-diff-util库来实现两个文件夹的自动比较,并利用ReportGenerator将比较结果生成HTML。当文件在两个文件夹中都存在,但内容不一致,则将差异数据的行数及内容出力到html中,将具体哪个字段有差异高亮显示出来;当文件只在一个文件夹中存在,将信息输出到html中。要求能识别隔行数据,按文件名生成结果html,html里显示两个文件夹的差异内容
时间: 2024-02-28 08:55:51 浏览: 184
好的,以下是一个示例的Groovy脚本,实现了你的要求。请注意,需要在Katalon Studio中安装并引入java-diff-utils和ReportGenerator库。
```
import difflib.*
import com.kms.katalon.core.reporting.ReportUtil
import com.kms.katalon.core.util.KeywordUtil
// 定义对比文件夹的路径
def folder1 = new File("path/to/folder1")
def folder2 = new File("path/to/folder2")
// 定义ReportGenerator生成HTML报告的路径
def reportPath = "path/to/report.html"
// 定义保存比较结果的列表
def diffList = []
// 定义一个函数,用于比较两个文件并保存比较结果到diffList中
def compareFiles(file1, file2) {
def lines1 = file1.readLines()
def lines2 = file2.readLines()
def patch = DiffUtils.diff(lines1, lines2)
if (!patch.getDeltas().isEmpty()) {
def diffText = ""
patch.getDeltas().each { delta ->
def lines = delta.getRevised().getLines()
def lineNum = delta.getRevised().getPosition() + 1
lines.each { line ->
diffText += "Line ${lineNum}: ${line}\n"
lineNum++
}
}
diffList.add([file1.getName(), file2.getName(), diffText])
}
}
// 遍历文件夹1中的所有文件,并与文件夹2中同名文件比较
folder1.eachFile { file1 ->
def file2 = new File(folder2, file1.getName())
if (file2.exists()) {
compareFiles(file1, file2)
} else {
diffList.add([file1.getName(), "", "Only in folder1"])
}
}
// 遍历文件夹2中的所有文件,并查找文件夹1中不存在的文件
folder2.eachFile { file2 ->
def file1 = new File(folder1, file2.getName())
if (!file1.exists()) {
diffList.add(["", file2.getName(), "Only in folder2"])
}
}
// 生成HTML报告
def reportBuilder = new StringBuilder()
reportBuilder.append("<html><body>")
diffList.each { diff ->
reportBuilder.append("<h2>File: ${diff[0]} / ${diff[1]}</h2>")
if (diff[2].startsWith("Only")) {
reportBuilder.append("<p>${diff[2]}</p>")
} else {
reportBuilder.append("<pre>${diff[2]}</pre>")
}
}
reportBuilder.append("</body></html>")
ReportUtil.generateReport(reportBuilder.toString(), reportPath)
// 打印日志,告知报告生成的路径
KeywordUtil.logInfo("HTML report generated at: ${reportPath}")
```
在以上脚本中,我们首先定义了要比较的两个文件夹的路径,以及生成报告的路径。然后,我们定义了一个函数`compareFiles`,用于比较两个文件。该函数使用了java-diff-utils库中的`DiffUtils.diff()`函数来比较文件内容,并将差异数据保存到一个字符串中。最后,我们遍历文件夹中的所有文件,调用`compareFiles`函数比较同名文件,并将比较结果保存到`diffList`列表中。如果一个文件只在一个文件夹中存在,则直接将信息输出到`diffList`中。最后,我们使用ReportGenerator库来生成HTML报告,并将报告保存到指定路径中。
由于你没有提供具体的文件格式,以上脚本只能比较文本文件。如果你需要比较其他类型的文件,需要使用其他的库或工具来实现。
阅读全文