有没有办法使用空手道写入文本文件

Is there a way to write to a text file using Karate

在我的空手道测试中,我需要将响应 ID 写入 txt 文件(或任何其他文件格式,例如 JSON),想知道它是否有能力做到这一点,我还没有看到其他情况在文档中。如果不是,是否有一个简单的JavaScript函数可以做到这一点?

尝试 karate.write(value, filename) API 但我们不鼓励这样做。此外,该文件将仅写入当前“构建”目录,对于 Maven 项目/独立 JAR,该目录为 target

value 可以是任何数据类型,空手道将写出字节(或纯文本)。没有对任何其他格式的内置支持。

这是一个 example.

编辑:对于将来遇到此答案的其他人来说,正确的做法是:

  1. 首先不要写文件,你永远不需要这样做,这个问题通常是由没有经验的人问的,他们出于某种原因认为“保存”文件的唯一方法验证前的响应是将其写入文件。不,请不要浪费你的时间 - 请 match 反对 response。您可以在发出其他 HTTP 请求时将它(或其中的一部分)保存到变量中。并且不要编写您的测试,以便场景(或功能)依赖于其他场景,这是 。另请注意,默认情况下,空手道会将所有 HTTP 请求和响应转储到日志文件(通常在 target/karate.log 中)以及 HTML 报告中。

  2. 看看 karate.write() 是否符合这个答案

  3. 编写自定义 Java(或使用 JVM 的 JS 函数)以使用 Java interop

    执行您想要的操作

另请注意,如果需要,您可以使用 karate.toCsv() 将 JSON 转换为 CSV。

我写入文件的理由与此不同。我明确地使用空手道来实现模拟。我想公开一个端点,其中上游系统将使用 POST/PUT 方法通过 json 有效载荷发送一些基本数据,空手道将构建后续有效载荷文件并将其存储在特定文件夹中,以及这个新创建的有效载荷文件将通过另一个 GET 调用公开。