Передача сохраненной переменной из полезной нагрузки jsonResponse добавляет знак минус в начало сохраненного значения - PullRequest
1 голос
/ 06 августа 2020

Я использую Katalon Studio для написания тестового скрипта цепочки API. Я отправляю запрос и сохраняю значение из возвращенного jsonResponse. По какой-то причине, когда я сохраняю значение transactionId из jsonResponse и передаю его в следующий URL-адрес запроса API, он добавляет - (символ минус). Я не могу понять, почему он это делает, и я проверил каждую строку кода, чтобы убедиться, что я не добавляю его случайно.

Файл ключевых слов:

@Keyword
def int transferAcct(int customerId, int amount, int externalId, int accountId, String tag) {
    def response = WS.sendRequestAndVerify(findTestObject("Postman/SampleWorkflow/transferNewAcct",
            ['customerId' : customerId, ('fromId') : externalId, 'toId' : accountId]))

    def jsonResponse = jsonSlurper.parseText(response.getResponseText())
    return jsonResponse.data[0].transactionId
    println("returned = " + jsonResponse.data[0].transactionId)
}

@Keyword
def getTransaction(int customerId, int transactionId) {
    def response = WS.sendRequestAndVerify(findTestObject("Postman/SampleWorkflow/getTransaction",
            ['customerId' : customerId, 'transactionId' : transactionId]))

    def jsonResponse = jsonSlurper.parseText(response.getResponseText())
    return jsonResponse.data[0].typeCode
}

Пример ответа полезной нагрузки от transferAcct():

{
  "data": [
    {
      "customerId": 100001,
      "tag": "",
      "transactionId": 2147529999
    }
  ],
  "errors": [],
  "status": 200
}

Я сохраняю transactionId как переменную, а затем передаю его в getTransaction() URL-адрес запроса.

Но в URL-адрес запроса добавлен - к началу transactionId. Пример: https://fakeUrl.com/transaction/get/100001/-2147449999

Единственное, что я могу придумать, может вызвать проблему, это то, что это единственный запрос в моем наборе тестов, который немедленно возвращает значения внутри массива return jsonResponse.data[0].transactionId - все других моих запросов возвращает словарь значений (пример: return jsonResponse.data.customerId)

1 Ответ

0 голосов
/ 07 августа 2020

Оказывается, transactionId на самом деле long, а не int. Итак, он менял возвращаемое значение. Обновление скриптов для объявления transactionId как long исправлено.

@Keyword
def long transferAcct(int customerId, int amount, int externalId, int accountId, String tag) {
    def response = WS.sendRequestAndVerify(findTestObject("Postman/SampleWorkflow/transferNewAcct",
            ['customerId' : customerId, ('fromId') : externalId, 'toId' : accountId]))

    def jsonResponse = jsonSlurper.parseText(response.getResponseText())
    return jsonResponse.data[0].transactionId
    println("returned = " + jsonResponse.data[0].transactionId)
}

@Keyword
def getTransaction(int customerId, long transactionId) {
    def response = WS.sendRequestAndVerify(findTestObject("Postman/SampleWorkflow/getTransaction",
            ['customerId' : customerId, 'transactionId' : transactionId]))

    def jsonResponse = jsonSlurper.parseText(response.getResponseText())
    return jsonResponse.data[0].typeCode
}
...