首页 > 解决方案 > 在 KarateAPI 中有类似 POJO 的功能?

问题描述

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

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

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

空手道允许我创建我的请求正文的 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-assuredkarateweb-api-testing

解决方案


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

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

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

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

如果你使用嵌入式表达式,你会变得更加花哨。

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

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


推荐阅读