【问题标题】:Is there a way to write to a text file using Karate有没有办法使用空手道写入文本文件
【发布时间】:2019-07-02 15:43:20
【问题描述】:

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

【问题讨论】:

    标签: dsl karate


    【解决方案1】:

    在 JavaScript 中尝试karate.write(value, filename)。因为我们不鼓励这样做,所以我们一直没有记录它。此外,该文件将仅写入当前的“构建”目录,对于 Maven 项目/独立 JAR,该目录将为 target

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

    这是example

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

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

    2. 看看karate.write()是否按照这个答案为你工作

    3. 使用Java interop编写自定义Java(或使用JVM的JS函数)来做你想做的事

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我认为您仍然没有“得到它”:) 您可以轻松地将复杂的 JSON-s 保存在内存中的数据结构中,以便 POST 请求使数据可用于未来的 GET 请求 - 请参阅: github.com/intuit/karate/tree/master/…
      猜你喜欢
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多