在 KarateAPI 中有类似 POJO 的功能吗?
Having a POJO like feature in KarateAPI?
我使用空手道和 RestAssured 已有一段时间了。当然,这两种工具都有优点和缺点。现在我有一个 RestAssured 项目,其中有请求和响应 object 和 POJO。我的请求包装我的端点并将我的 POJO 发送到那些端点。我在抽象层中进行所有 Headers 等配置。如果我需要覆盖它们,我会在测试期间覆盖它们。如果没有,它是我触发端点的两行代码。
我使用 edpoint 的快乐路径和负路径的方式是在每次测试之前在构造函数中使用新值初始化 POJO。然后我在测试范围内覆盖我想要的值。例如,如果我想测试密码字段的否定大小写,我在测试期间将此字段设置为空字符串。但是其他字段在测试前已经设置了一些随机的东西。
但我不知道如何用空手道实现这一点。
空手道允许我创建一个 JSON 表示我的请求 body 并定义我的参数,如下例所示。
{
"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 body 但是当 body 开始有超过 20 个字段时,为每个测试初始化每个字段变得很痛苦。
空手道是否有办法通过我需要提出解决方案的预定义步骤来解决这个问题?
There are advantages and downside of both tools of course.
我肯定有偏见,但恕我直言,与 REST-assured 相比,空手道的唯一缺点是你没有获得编译时安全:) 我希望你已经看到 this comparison.
空手道有多种方法可以做你想做的事。这是我会做的。
- 创建一个 JSON 文件,其中设置了所有 "happy path" 值
- 使用
read()
语法加载文件(这意味着它可以在多个测试中重复使用)
- 使用
set
关键字仅更新您的场景或负面测试的字段
如果你使用embedded expressions,你会变得更漂亮。
- 创建一个 JSON 文件,其中设置了所有 "happy path" 值,并且您想要更改的值类似于
foo: '##(foo)'
- 在使用
read()
之前,你初始化了一些变量,例如* def foo = 'bar'
如果你使用 null
那个 JSON 键甚至会从 JSON 中删除
read()
JSON。可以使用了!
您可以参考这个文件来演示 XML 中的一些概念,您可能会得到更多的想法:xml.feature
我使用空手道和 RestAssured 已有一段时间了。当然,这两种工具都有优点和缺点。现在我有一个 RestAssured 项目,其中有请求和响应 object 和 POJO。我的请求包装我的端点并将我的 POJO 发送到那些端点。我在抽象层中进行所有 Headers 等配置。如果我需要覆盖它们,我会在测试期间覆盖它们。如果没有,它是我触发端点的两行代码。
我使用 edpoint 的快乐路径和负路径的方式是在每次测试之前在构造函数中使用新值初始化 POJO。然后我在测试范围内覆盖我想要的值。例如,如果我想测试密码字段的否定大小写,我在测试期间将此字段设置为空字符串。但是其他字段在测试前已经设置了一些随机的东西。
但我不知道如何用空手道实现这一点。
空手道允许我创建一个 JSON 表示我的请求 body 并定义我的参数,如下例所示。
{
"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 body 但是当 body 开始有超过 20 个字段时,为每个测试初始化每个字段变得很痛苦。
空手道是否有办法通过我需要提出解决方案的预定义步骤来解决这个问题?
There are advantages and downside of both tools of course.
我肯定有偏见,但恕我直言,与 REST-assured 相比,空手道的唯一缺点是你没有获得编译时安全:) 我希望你已经看到 this comparison.
空手道有多种方法可以做你想做的事。这是我会做的。
- 创建一个 JSON 文件,其中设置了所有 "happy path" 值
- 使用
read()
语法加载文件(这意味着它可以在多个测试中重复使用) - 使用
set
关键字仅更新您的场景或负面测试的字段
如果你使用embedded expressions,你会变得更漂亮。
- 创建一个 JSON 文件,其中设置了所有 "happy path" 值,并且您想要更改的值类似于
foo: '##(foo)'
- 在使用
read()
之前,你初始化了一些变量,例如* def foo = 'bar'
如果你使用null
那个 JSON 键甚至会从 JSON 中删除
read()
JSON。可以使用了!
您可以参考这个文件来演示 XML 中的一些概念,您可能会得到更多的想法:xml.feature