为了账号安全,请及时绑定邮箱和手机立即绑定

需要在独立的 karate.jar 中使用 JavaScript 检查给定目录的文件夹

需要在独立的 karate.jar 中使用 JavaScript 检查给定目录的文件夹

人到中年有点甜 2023-09-07 14:32:37
我需要使用独立 karate.jar 中的 JavaScript 检查给定目录的文件夹、文件和文件详细信息(文件大小),并且此验证是测试自动化脚本的一部分。我知道这可以通过在 Maven 中编写自定义 Java 包并在空手道脚本的 JavaScript 中使用它们来实现。如何在独立的 karate.jar 中实现这一点。将目录路径和目录名称作为两个参数传递给 JavaScript 函数,该函数验证给定的目录名称是否存在于提供的目录路径中。它是处理文件系统对象的一种。我了解空手道仅支持读取文件,而不支持读取目录中的文件夹名称和文件名/文件详细信息。读取空手道脚本中的文件:https://intuit.github.io/karate/#reading-files 允许的文件扩展名是:.json、.xml、.yaml、.csv、.txt、.feature请指导我如何在空手道中使用 Javascript 来实现这一点?谢谢钱德拉。
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

是的,这对于独立 JAR 来说更困难。以下是一些建议:

  • 编写一个小 JAR 文件(一次性),您可以将其包含在独立项目中

  • karate.exec()通过例如在 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


查看完整回答
反对 回复 2023-09-07
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信