rest-assured - 在 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 保证相比的唯一缺点是您没有获得编译时安全性 :) 我希望您已经看到了这个比较。
空手道有多种方法可以做你想做的事。这就是我要做的。
- 创建一个包含所有“快乐路径”值的 JSON 文件
- 使用
read()
语法加载文件(这意味着这可以在多个测试中重复使用) - 使用
set
关键字仅更新场景或否定测试的字段
如果你使用嵌入式表达式,你会变得更加花哨。
- 创建一个 JSON 文件,其中设置了所有“快乐路径”值,并且您想要改变的值看起来像
foo: '##(foo)'
- 在使用
read()
您初始化一些变量之前,例如* def foo = 'bar'
,如果您使用null
该 JSON 密钥,甚至会从 JSON 中删除 read()
JSON。它可以使用了!
您可以参考此文件,该文件演示了其中一些 XML 概念,您可能会得到更多想法:xml.feature
推荐阅读
- shopify - ShopifySharp.Product.BodyHtml 为空,即使 Shopify 响应包含 body_html
- android - 来自 admob 的广告未显示,因为在 admob 和 firebase 中使用与应用程序相同的包名称
- ios - Swift scrollToItem 在子类化 UICollectionViewController 时有效。但不适用于“有关系”collectionView
- javascript - 如何在 PayUMoney Bolt Launch 上调用函数?
- dialogflow-es - Dialogflow 将无效日期转换为系统实体的随机日期:日期
- sql - 我们如何在查询时计算德鲁伊的百分位数?
- c++ - 带有条件调用可变数量函数的 For 循环
- javascript - JavaScript 承诺阻止代码执行
- algorithm - 为什么置换算法的时间复杂度是 n*n!而不是 n^3 * n!?
- python - 无法使用 while 循环保存文本文件