我想验证响应中的值是否与数据库中的值没有不同。我发出 GET 请求,它从数据库中提供了一些信息,我需要以某种方式验证该信息是否正确。我做了很多东西,这是我的代码。
@Keyword
def getResource() {
SQLHandler_test sql = new SQLHandler_test()
SQLHandler_test1 sql_cards = new SQLHandler_test1()
List<GroovyRowResult> res = sql.getSelectResults('SELECT TOP 2 PERSONAL_ID, CLIENT_NO, SMS_MOBILE_PHONE FROM CLIENTS WHERE PERSONAL_ID IS NOT NULL AND SMS_MOBILE_PHONE IS NOT NULL ')
JsonSlurper slurper = new JsonSlurper()
for(Map oneRow in res) {
String personalId = oneRow.get("PERSONAL_ID")
KeywordUtil.logInfo("Personal ID: " + personalId)
println("Personal ID: " + personalId)
String phone = oneRow.get("SMS_MOBILE_PHONE")
KeywordUtil.logInfo("Phone number: " + phone )
println("Mobile Phone: " + phone)
// use variables in the GET request here
RequestObject get_object = findTestObject('CUSTOMERS_Requests/Customer/CustomerByPersonalID/GET_CustomerByPersonalID')
get_object.setRestUrl(String.format(get_object.getRestUrl(), personalId, phone))
ResponseObject get_response = WS.sendRequestAndVerify(get_object)
int statusCode = get_response.getStatusCode()
KeywordUtil.logInfo("URL: " + get_object.getRestUrl())
String getContent = get_response.getResponseBodyContent()
KeywordUtil.logInfo("Status Code: " + statusCode + " Body Content: " + getContent)
WS.verifyResponseStatusCode(get_response, 200)
Map parsedJson = slurper.parseText(getContent)
String parsed_personalID = parsedJson.get("personalId")
String parsed_customerID = parsedJson.get("customerId")
String parsed_mobilePN = parsedJson.get("mobilePhoneNumber")
String parsed_canUseIB = parsedJson.get("cUIB")
String client_no = oneRow.get("CLIENT_NO")
// String parsed_expiryDate = parsedJson.get("cardExpirationDate")
// println(parsed_expiryDate)
println(parsed_personalID)
if(parsed_personalID == personalId){
KeywordUtil.logInfo(parsed_personalID + " = " + personalId + " Matched !")
}
if(parsed_mobilePN == phone){
KeywordUtil.logInfo(parsed_mobilePN + " = " + phone + " Matched !")
}
if(parsed_customerID == client_no) {
KeywordUtil.logInfo(parsed_customerID + " = " + client_no + " Matched !")
}
List<GroovyRowResult> res_cards = sql_cards.getSelectResults('SELECT CONVERT(date, [EXPIRY_DATE]) "EXPIRY_DATE" FROM card.PCARDS WHERE CARD_CLIENT_NO = ' + client_no)
for(Map oneRow_cards in res_cards) {
String expiry_date = oneRow_cards.get("EXPIRY_DATE")
println(expiry_date)
}
}
return res
}
比较电话、personal_id 和 customer_id 没有问题,但无法比较卡信息。
这就是响应的样子。
{
"customerId": 5555,
"personalId": "1123",
"mobilePhoneNumber": "2233",
"cUIB": true,
"cards": [
{
"cardExpirationDate": "2020-05-31",
"cardNumber": "1"
},
{
"cardExpirationDate": "2012-03-31",
"cardNumber": "2"
},
{
"cardExpirationDate": "2008-03-31",
"cardNumber": "33"
},
{
"cardExpirationDate": "2020-09-30",
"cardNumber": "522"
},
{
"cardExpirationDate": "2018-04-30",
"cardNumber": "5"
},
{
"cardExpirationDate": "2014-03-31",
"cardNumber": "23"
}
]
}
我编写了一个代码,只能比较一个请求,但我希望它可以比较多个请求,并且卡片数量会有所不同。
最佳答案
您可以通过此循环获取卡信息(您可以查看如何解析多级 JSON here ):
for (def i = 0; i<parsedJson.cards.size(); i++){
println parsedJson.cards[i].cardExpirationDate
println parsedJson.cards[i].cardNumber
}
关于java - 将请求中获取的值与 Katalon Studio 中的数据库进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54415086/