【问题标题】:Condition in Rest-Assured安心状态
【发布时间】:2015-11-12 21:24:11
【问题描述】:

我正在寻找一种在 Rest Assured 中实施条件验证的方法。假设我得到一个响应正文为

{
"id": 1,
"accounts": [
  {
    "accountType": "Type1",
    "properties": {}
  },
  {
    "accountType": "Type2",
    "properties": {}
  }
]

}

我首先检查“帐户”是否存在。我们可以这样做

given().when().get("url").then().body().("any { it.key == 'accounts' }"), is(true))

如果响应正文中存在帐户,我需要验证帐户数组的大小。有什么条件我可以在这里使用,比如

if(accountsExists) {Check for Array.size();} else {do something}

【问题讨论】:

    标签: rest-assured


    【解决方案1】:

    可以这样做,但我强烈建议不要这样做(因为它很复杂并且使用了未记录的功能)。例如,假设您要返回 accounts 的大小(如果存在),如果不存在则要返回 id 的值:

    get("url").then().body("accounts?.size() ?: restAssuredJsonRootObject.id"), anyOf(is(2), is(1)));
    

    解释:

    accounts?.size() 表示它应该返回帐户列表的大小(如果它存在)(即不为空)

    ?:elvis operator,它将返回帐户的大小或我们在右侧写的内容。

    restAssuredJsonRootObject.id 表示我们要从文档的根目录返回id。文档的根被称为restAssuredJsonRootObject(未记录,可能会更改)。

    我会做的是创建两个不同的测试。一个你知道accounts 存在,一个不存在。

    【讨论】:

    • 感谢约翰的回答和解释。是的,我在自动化中使用了相同的方法,例如为每个测试用例创建 2 个测试用例。
    • 很高兴您发现它很有用。如果您认为合适,请将其标记为已回答。
    • 对不起,我没有太多的特权这样做,但我已经投票了,只要我有足够的特权就会出现。
    猜你喜欢
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    相关资源
    最近更新 更多