KarateAPI 中有类似 POJO 的功能吗?

Can*_*ygu 3 rest-assured web-api-testing karate

我使用 Karate 和 RestAssured 一段时间了。当然,这两种工具都有优点和缺点。现在我有一个 RestAssured 项目,其中有请求和响应对象以及 POJO。我的请求包装我的端点并将我的 POJO 发送到这些端点。我在抽象层中完成所有标题等配置。如果我需要覆盖它们,我会在测试期间覆盖它们。如果没有,我需要两行代码来触发端点。

我处理 edpoint 的快乐路径和消极路径的方法是,在每次测试之前使用构造函数中的新值初始化 POJO。然后我在测试范围中覆盖我想要的值。例如,如果我想测试密码字段的负大小写,我在测试过程中将此字段设置为空字符串。但其他字段在测试之前已经设置为一些随机的东西。

但我不知道如何用空手道实现这一点。

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

    {
  "firstName": "<name>",
  "lastName": "<lastName>",
  "email": "<email>",
  "role": <role>
  }
Run Code Online (Sandbox Code Playgroud)

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

 |token    |value|
  |name     |'canberk'|
  |lastName |''|
  |email    |'canberk@blbabla.com'|
  |role     |'1'|
Run Code Online (Sandbox Code Playgroud)

|token    |value|
      |name     |''|
      |lastName |'akduygu'|
      |email    |'canberk@blbabla.com'|
      |role     |'1'|
Run Code Online (Sandbox Code Playgroud)

就这样继续下去。

4 个字段的 JSON 主体没问题,但是当主体开始拥有超过 20 个字段时,为每个测试初始化​​每个字段就变得很痛苦。

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

Pet*_*mas 5

当然,这两种工具都有优点和缺点。

我绝对有偏见,但恕我直言,空手道与 REST-assured 相比的唯一缺点是你无法获得编译时安全性:) 我希望你已经看到了这个比较

空手道有多种方法可以满足您的需求。这就是我要做的。

  1. 创建一个包含所有“快乐路径”值集的 JSON 文件
  2. 使用read()语法加载文件(这意味着可以在多个测试中重复使用)
  3. 使用set关键字仅更新您的场景或负面测试的字段

如果您使用嵌入式表达式,您会变得更加奇特。

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

您可以参考这个文件,它演示了 XML 的一些概念,您可能会得到更多想法:xml.feature