katalon写一个Groovy脚本,利用java-diff-util库来实现两个文件夹的自动比较。当文件在两个文件夹中都存在,但内容不一致,则将差异数据的行数及内容出力到html中,将具体哪个字段有差异高亮显示出来;当文件只在一个文件夹中存在,将信息输出到html中。要求能识别隔行数据,按文件名生成结果html,html里显示两个文件夹的差异内容
时间: 2024-02-28 19:55:02 浏览: 48
htmldiff:一个使用html标签显示差异的差异库
以下是一个基于 Katalon Studio 和 Java-Diff-Utils 库的 Groovy 脚本,用于比较两个文件夹中的文件内容,并将差异数据行数和内容输出到 HTML 中:
```groovy
import difflib.*
import com.kms.katalon.core.util.KeywordUtil
// 定义两个文件夹的路径
def folderPath1 = 'path/to/folder1'
def folderPath2 = 'path/to/folder2'
// 获取两个文件夹中的文件列表
def fileList1 = new File(folderPath1).listFiles()
def fileList2 = new File(folderPath2).listFiles()
// 定义 HTML 输出文件的路径
def htmlFilePath = 'path/to/result.html'
// 创建 HTML 输出文件,并写入表头
def htmlFile = new File(htmlFilePath)
htmlFile << '''
<html>
<head>
<style>
.diff-delete {
background-color: #FFCDD2;
}
.diff-insert {
background-color: #C8E6C9;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>文件名</th>
<th>差异行数</th>
<th>差异内容</th>
</tr>
</thead>
<tbody>
'''
// 遍历文件列表,比较文件内容并将结果写入 HTML
for (file1 in fileList1) {
def fileName = file1.name
def file2 = new File(folderPath2 + '/' + fileName)
if (file2.exists()) {
// 如果文件在两个文件夹中都存在,则比较文件内容
def lines1 = file1.readLines()
def lines2 = file2.readLines()
def patch = DiffUtils.diff(lines1, lines2)
def diffLines = patch.getDeltas().collect { delta ->
def range = delta.getRevised().getLines().size()
def lines = delta.getRevised().getLines().join('\n')
"${range}\n${lines}"
}.join('\n\n')
if (!diffLines.isEmpty()) {
// 如果文件内容有差异,则将差异行数和内容写入 HTML
def diffHtml = diffLines.replaceAll('\n', '<br>').replaceAll(' ', ' ')
def diffClass = (diffLines.startsWith('+') ? 'diff-insert' : 'diff-delete')
htmlFile << '''
<tr>
<td>${fileName}</td>
<td>${patch.getDeltas().size()}</td>
<td class="${diffClass}">${diffHtml}</td>
</tr>
'''
}
} else {
// 如果文件只在一个文件夹中存在,则将信息写入 HTML
htmlFile << '''
<tr>
<td>${fileName}</td>
<td>1</td>
<td>Only exists in ${folderPath1}</td>
</tr>
'''
}
}
for (file2 in fileList2) {
def fileName = file2.name
def file1 = new File(folderPath1 + '/' + fileName)
if (!file1.exists()) {
// 如果文件只在一个文件夹中存在,则将信息写入 HTML
htmlFile << '''
<tr>
<td>${fileName}</td>
<td>1</td>
<td>Only exists in ${folderPath2}</td>
</tr>
'''
}
}
// 写入表尾并关闭 HTML 文件
htmlFile << '''
</tbody>
</table>
</body>
</html>
'''
htmlFile.close()
// 输出结果到 Katalon Studio 的日志中
KeywordUtil.logInfo("差异比较结果已输出到 ${htmlFilePath}")
```
上面的脚本会输出两个文件夹中所有文件的差异比较结果,并将结果以 HTML 格式保存到指定路径的文件中。HTML 文件会显示每个文件的文件名、差异行数和差异内容,其中差异内容会高亮显示。如果某个文件只在一个文件夹中存在,则会在 HTML 中显示相应的信息。
阅读全文