使用Katalon Studio的Groovy脚本来实现自动化比较两个文件夹下同名的csv文件是否一致,并将比较结果输出到另一个文件中。要求不一致时定位到哪个文件的哪一行数据不一致
时间: 2023-12-03 13:42:11 浏览: 83
以下是一个使用Katalon Studio的Groovy脚本来实现自动化比较两个文件夹下同名的csv文件是否一致,并将比较结果输出到另一个文件中的示例代码:
```groovy
import com.opencsv.CSVReader
// 比较两个CSV文件是否一致
// 参数:
// - file1: 第一个CSV文件路径
// - file2: 第二个CSV文件路径
// - resultFile: 比较结果输出文件路径
// 返回值:
// - 如果两个文件一致,返回true;否则返回false
def compareCsvFiles(String file1, String file2, String resultFile) {
// 读取第一个CSV文件
CSVReader reader1 = new CSVReader(new FileReader(file1))
List<String[]> lines1 = reader1.readAll()
reader1.close()
// 读取第二个CSV文件
CSVReader reader2 = new CSVReader(new FileReader(file2))
List<String[]> lines2 = reader2.readAll()
reader2.close()
// 比较两个文件的行数和列数是否一致
if (lines1.size() != lines2.size() || lines1[0].length != lines2[0].length) {
// 两个文件不一致,输出比较结果
File result = new File(resultFile)
FileWriter writer = new FileWriter(result)
writer.write("两个文件不一致!\n")
writer.write("文件1: $file1\n")
writer.write("文件2: $file2\n")
writer.write("文件1行数: ${lines1.size()}, 文件2行数: ${lines2.size()}\n")
writer.write("文件1列数: ${lines1[0].length}, 文件2列数: ${lines2[0].length}\n")
writer.close()
return false
}
// 比较两个文件的每一行数据是否一致
for (int i = 0; i < lines1.size(); i++) {
String[] row1 = lines1[i]
String[] row2 = lines2[i]
if (!Arrays.equals(row1, row2)) {
// 两个文件不一致,输出比较结果
File result = new File(resultFile)
FileWriter writer = new FileWriter(result)
writer.write("两个文件不一致!\n")
writer.write("文件1: $file1\n")
writer.write("文件2: $file2\n")
writer.write("行数: ${i + 1}\n")
// 输出哪个文件的哪一行数据不一致
for (int j = 0; j < row1.length; j++) {
if (!row1[j].equals(row2[j])) {
writer.write("列数: ${j + 1}, 文件1值: ${row1[j]}, 文件2值: ${row2[j]}\n")
}
}
writer.close()
return false
}
}
// 两个文件一致,输出比较结果
File result = new File(resultFile)
FileWriter writer = new FileWriter(result)
writer.write("两个文件一致!\n")
writer.write("文件1: $file1\n")
writer.write("文件2: $file2\n")
writer.close()
return true
}
// 测试代码
String file1 = "path/to/file1.csv"
String file2 = "path/to/file2.csv"
String resultFile = "path/to/result.txt"
compareCsvFiles(file1, file2, resultFile)
```
这个脚本会读取两个CSV文件,并逐一比较它们的每一行数据是否一致。如果两个文件不一致,它会输出比较结果,并指出哪个文件的哪一行数据不一致。否则,它会输出比较结果表明两个文件一致。
阅读全文