需要在独立 karate.jar 中使用 JavaScript 检查给定目录的文件夹、文件和文件详细信息

Need to check folders, files and file details for given directory using JavaScript in standalone karate.jar

我需要在独立 karate.jar 中使用 JavaScript 检查给定目录的文件夹、文件和文件详细信息(文件大小),并且此验证是测试自动化脚本的一部分。

我知道这可以通过在 maven 中编写自定义 java 包并在空手道脚本的 JavaScript 中使用它们来实现。

如何独立实施 karate.jar。将目录路径和目录名称作为两个参数传递给 JavaScript 函数,该函数验证给定目录名称是否存在于提供的目录路径中。它是处理文件系统对象的一种。

我了解空手道只支持读取文件,不支持读取目录中的文件夹名称和文件名称/文件详细信息。 读取空手道脚本中的文件:https://intuit.github.io/karate/#reading-files 允许的文件扩展名是:.json、.xml、.yaml、.csv、.txt、.feature

请指导我如何在空手道中使用 Javascript 实现此功能?

谢谢 钱德拉

是的,独立 JAR 更难做到这一点。以下是一些建议:

  • 编写一个小的 JAR 文件(一次性),您可以将其包含在独立项目中:
  • 通过 karate.exec() 使用 OS 命令,例如关于 windows * def homePath = karate.exec('cmd /c echo %HOMEPATH%')
  • 通过一些工作,您可以创建使用 JVM 库的纯 JS 脚本,但是您需要很好地理解 Java 中存在的内容,这些很难调试,所以我不推荐这个方法。我在下面举个例子:

* def findFile = 
"""
function(file, condition) {
  var root = new java.io.File(file);
  function recurse(file) {
    var list = file.listFiles();
    for (var i = 0; i < list.length; i++) {
      var f = list[i];
      if (f.directory) {
        // karate.log('recurse:', f);
        return recurse(f);
      } else {
        var path = f.path;
        // karate.log('scan:', path);
        if (condition(path)) {
          karate.log('*** found:', path);
          return f;
        }
      }
    }
  }  
  return recurse(root);
}
"""
* def filter = function(x){ return x.contains('/test-') && x.endsWith('.log') }
* def found = findFile('.', filter)
* print 'found:', found