【问题标题】:Having a POJO like feature in KarateAPI?在 KarateAPI 中有类似 POJO 的功能?
【发布时间】:2023-03-17 21:05:02
【问题描述】:

我使用空手道和 RestAssured 已经有一段时间了。当然,这两种工具各有利弊。现在我有一个 RestAssured 项目,其中有请求和响应对象和 POJO。我的请求包装了我的端点并将我的 POJO 发送到这些端点。我在抽象层中进行所有标题等配置。如果我需要覆盖它们,我会在测试期间覆盖它们。如果没有,我只需两行代码即可触发端点。

我使用 edpoint 的快乐路径和消极路径的方式是,我在每次测试之前使用构造函数中的新值初始化 POJO。然后我覆盖了我想要在测试范围内的值。例如,如果我想测试密码字段的否定情况,我在测试期间将此字段设置为空字符串。但是其他字段在测试之前已经设置为一些随机的东西。

但我不知道如何通过空手道实现这一目标。

Karate 允许我创建我的请求正文的 JSON 表示并定义我的参数,如下例所示。

    {
  "firstName": "<name>",
  "lastName": "<lastName>",
  "email": "<email>",
  "role": <role>
  }

然后在每次测试中,我都必须用一些数据填充所有字段。

 |token    |value|
  |name     |'canberk'|
  |lastName |''|
  |email    |'canberk@blbabla.com'|
  |role     |'1'|

|token    |value|
      |name     |''|
      |lastName |'akduygu'|
      |email    |'canberk@blbabla.com'|
      |role     |'1'|

就这样继续下去。

4 字段 JSON 正文没关系,但是当正文开始有超过 20 个字段时,为每个测试初始化​​每个字段变得很痛苦。

空手道有没有办法通过预先定义的步骤来解决这个问题?我需要想出一个解决方案?

【问题讨论】:

    标签: rest-assured karate web-api-testing


    【解决方案1】:

    当然,这两种工具各有利弊。

    我肯定有偏见,但恕我直言,与 REST 保证相比,空手道的唯一缺点是您没有获得编译时安全性 :) 我希望您已经看到 this comparison

    空手道有多种方法可以做你想做的事。这就是我要做的。

    1. 创建一个 JSON 文件,其中设置了所有“快乐路径”值
    2. 使用read() 语法加载文件(这意味着它可以在多个测试中重复使用)
    3. 使用 set 关键字仅更新场景或否定测试的字段

    如果你使用embedded expressions,你会变得更漂亮。

    1. 创建一个 JSON 文件,其中设置了所有“快乐路径”值,并且您想要改变的值看起来像 foo: '##(foo)'
    2. 在使用read() 之前,您初始化了一些变量,例如* def foo = 'bar' 如果您使用 null,该 JSON 密钥甚至会从 JSON 中删除
    3. read() JSON。可以使用了!

    您可以参考此文件,该文件演示了其中一些 XML 概念,您可能会得到更多想法:xml.feature

    【讨论】:

    • 我怎么会错过'set'关键字!!!这正是我想要的:)
    • 另一个简单的问题,是否可以在场景大纲的示例部分中使用我的自定义 javascript 方法调用?还是所有这些值都必须是静态的?
    • @CanberkAkduygu 你可以想出创造性的方法来混合Examples 和动态JavaScript:github.com/intuit/karate/blob/master/karate-demo/src/test/java/…
    • 我正在处理该示例,但调用我的自定义 javascript 方法在数据表中不起作用。可能是我做错了什么。我需要为每次执行创建一个不同的电子邮件地址。所以我有一个javascript方法来创建一个随机数。我需要将此值添加到我的电子邮件数据集中。再次感谢您的快速回复
    • @CanberkAkduygu 然后查看table 关键字。它的工作方式略有不同。但我认为您需要做的就是将 JS 方法从示例表中移出,作为步骤的一部分。那可能是set 电子邮件。应该工作。
    猜你喜欢
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多