安心状态
Condition in Rest-Assured
我正在寻找一种在 Rest Assured 中实现条件验证的方法。假设如果我得到一个响应体
{
"id": 1,
"accounts": [
{
"accountType": "Type1",
"properties": {}
},
{
"accountType": "Type2",
"properties": {}
}
]
}
我先检查 "accounts" 是否存在。我们可以通过
given().when().get("url").then().body().("any { it.key == 'accounts' }"), is(true))
然后如果响应正文中存在帐户,我需要验证帐户数组的大小。我可以在这里使用任何条件吗
if(accountsExists) {Check for Array.size();} else {do something}
你可以这样做,但我强烈建议不要这样做(因为它很复杂并且使用未记录的功能)。例如,假设您想要 return accounts
的大小(如果它存在),如果它不存在,您想要 return id
的值:
get("url").then().body("accounts?.size() ?: restAssuredJsonRootObject.id"), anyOf(is(2), is(1)));
解释:
accounts?.size() 意味着它应该 return 帐户列表的大小如果它存在(即不为空)
?: elvis operator 将 return 帐户的大小或我们在右侧写的内容。
restAssuredJsonRootObject.id表示我们要从文档的根部开始returnid
。文档的根称为 restAssuredJsonRootObject
(未记录且可能会更改)。
我会做的是创建两个不同的测试。一种是您知道 accounts
存在,另一种是不存在。
我正在寻找一种在 Rest Assured 中实现条件验证的方法。假设如果我得到一个响应体
{
"id": 1,
"accounts": [
{
"accountType": "Type1",
"properties": {}
},
{
"accountType": "Type2",
"properties": {}
}
]
}
我先检查 "accounts" 是否存在。我们可以通过
given().when().get("url").then().body().("any { it.key == 'accounts' }"), is(true))
然后如果响应正文中存在帐户,我需要验证帐户数组的大小。我可以在这里使用任何条件吗
if(accountsExists) {Check for Array.size();} else {do something}
你可以这样做,但我强烈建议不要这样做(因为它很复杂并且使用未记录的功能)。例如,假设您想要 return accounts
的大小(如果它存在),如果它不存在,您想要 return id
的值:
get("url").then().body("accounts?.size() ?: restAssuredJsonRootObject.id"), anyOf(is(2), is(1)));
解释:
accounts?.size() 意味着它应该 return 帐户列表的大小如果它存在(即不为空)
?: elvis operator 将 return 帐户的大小或我们在右侧写的内容。
restAssuredJsonRootObject.id表示我们要从文档的根部开始returnid
。文档的根称为 restAssuredJsonRootObject
(未记录且可能会更改)。
我会做的是创建两个不同的测试。一种是您知道 accounts
存在,另一种是不存在。