【发布时间】:2019-07-02 15:43:20
【问题描述】:
在我的空手道测试中,我需要将响应 id 写入 txt 文件(或任何其他文件格式,如 JSON),想知道它是否有这样做的能力,我在文档中没有看到其他内容。在没有的情况下,有没有一个简单的 JavaScript 函数可以做到这一点?
【问题讨论】:
在我的空手道测试中,我需要将响应 id 写入 txt 文件(或任何其他文件格式,如 JSON),想知道它是否有这样做的能力,我在文档中没有看到其他内容。在没有的情况下,有没有一个简单的 JavaScript 函数可以做到这一点?
【问题讨论】:
在 JavaScript 中尝试karate.write(value, filename)。因为我们不鼓励这样做,所以我们一直没有记录它。此外,该文件将仅写入当前的“构建”目录,对于 Maven 项目/独立 JAR,该目录将为 target。
value 可以是任何数据类型,空手道会将字节(或纯文本)写出。没有对任何其他格式的内置支持。
这是example。
编辑:对于将来遇到此答案的其他人,正确的做法是:
首先不要写文件,你永远不需要这样做,这个问题通常是由没有经验的人提出的,他们出于某种原因认为在验证之前“保存”响应的唯一方法是编写它到一个文件。不,请不要浪费您的时间 - 请仅match 反对response。您可以在发出其他 HTTP 请求时将其(或其中的一部分)保存到变量中。并且不要编写测试以使场景(或功能)依赖于其他场景,这是very bad practice。另请注意,默认情况下,Karate 会将所有 HTTP 请求和响应转储到日志文件(通常在 target/karate.log)以及 HTML 报告中。
看看karate.write()是否按照这个答案为你工作
使用Java interop编写自定义Java(或使用JVM的JS函数)来做你想做的事
【讨论】:
我写入文件的理由是不同的。我明确地使用空手道来实现模拟。我想公开一个端点,其中上游系统将使用 POST/PUT 方法通过 json 有效负载发送一些基本数据,而空手道将构建后续有效负载文件并将其存储在特定文件夹中,并且这个新创建的有效负载文件将通过另一个 GET 公开打电话。
【讨论】: