首页 > 解决方案 > 比较从请求中获得的值与 Katalon Studio 中的数据库

问题描述

我想验证响应中的值是否与数据库不同。我发出一个 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"
    }
  ]
}

我制作了一个代码,我只能针对一个请求进行比较,但我想制作它应该针对许多请求进行比较,并且卡片数量会有所不同。

标签: javasql-servergroovyresponsekatalon-studio

解决方案


您可以通过此循环获取卡片信息(您可以在此处查看如何解析具有多个级别的 JSON ):

for (def i = 0; i<parsedJson.cards.size(); i++){

    println parsedJson.cards[i].cardExpirationDate
    println parsedJson.cards[i].cardNumber

}

推荐阅读