# How to update local variable at runtime

**URL:** <https://forum.katalon.com/t/how-to-update-local-variable-at-runtime/52090>\
**Category:** API Testing\
**Tags:** api-testing, katalon-studio\
**Created:** [February 12, 2021, 9:27pm UTC](https://forum.katalon.com/t/how-to-update-local-variable-at-runtime/52090 "2021-02-12T21:27:10Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![zaraaq9](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/zaraaq9/32/16103_2.png) [@zaraaq9](https://forum.katalon.com/u/zaraaq9)\
**Post date:** [February 12, 2021, 9:27pm UTC](https://forum.katalon.com/t/how-to-update-local-variable-at-runtime/52090/1 "2021-02-12T21:27:10Z")

</div>

Hi,

During runtime I want to replace a local variable with another value. In other words, I want to replace the request variable called ${Id} at runtime.  
I’ve tried the following code but it fails to use the value 222222, instead it’s still pulling the Id value from the “Variables” tab. Please help.  
Thanks

RequestObject request = WSResponseManager.getInstance().getCurrentRequest()

requestBody = request.getSoapBody()  
requestBody.replace(’${Id}’, “222222”)

request.setSoapBody(requestBody)  
System.out.println("request body = " + request.getSoapBody())  
response = WS.sendRequest(request)

//Request

```
        <FName>${FirstName}</FName>
        <AId>${Id}</AId>
```

---

<div class="post-metadata">

**Author:** ![kazurayam](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/kazurayam/32/333_2.png) [@kazurayam](https://forum.katalon.com/u/kazurayam)\
**Post date:** [February 13, 2021, 2:23am UTC](https://forum.katalon.com/t/how-to-update-local-variable-at-runtime/52090/2 "2021-02-13T02:23:30Z")

</div>

I have published a GitHub repository

> **[GitHub - kazurayam/PetstoreSwaggerIo](https://github.com/kazurayam/PetstoreSwaggerIo)**
>
> Contribute to kazurayam/PetstoreSwaggerIo development by creating an account on GitHub.

This project is a working example, which shows

1. hoow to define a parameterised TestObject
2. Test Case turns a parameterised TestObject to a RequestObject
3. using that RequestObject, Test Case makes multiple times of request&response interaction to ([https://petstore.swagger.io/v2/pet/findByStatus?status=${status}](https://petstore.swagger.io/v2/pet/findByStatus?status=$%7Bstatus%7D))  
while interpolating the parameter with values as wanted

Please read the source of `Test Cases/multiple_searches_for_pets_by_status` and study it to find out how it works.

This example may not be an immediate answer to your problem. But hopefully it will give you some idea.

* * *

The TestObject looks like this:

 ![スクリーンショット 2021-02-13 11.25.41](https://europe1.discourse-cdn.com/katalon/original/3X/c/4/c4691919ec0d17a5f39349eabd254cdd855cc596.jpeg)

The Test Case script looks like this:

```auto
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject

import com.kms.katalon.core.testobject.RequestObject
import com.kms.katalon.core.testobject.ResponseObject
import com.kms.katalon.core.testobject.TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS

def statusList = ["available", "pending", "sold"]

for (status in statusList) {
	println "-------------------- ${status} pets --------------------"
	String doc = retrievePetsByStatus(status)
	println doc
}

def retrievePetsByStatus(String status) {
	TestObject tObj = findTestObject("Object Repository/my/petstore_findByStatus_parameterized", ["status": status])
	RequestObject req = (RequestObject)tObj
	ResponseObject res = WS.sendRequest(req)
	return res.getResponseBodyContent()
}

```

When I rant it I saw outputs like this:

```auto
-------------------- available pets --------------------
[{"id":9222968140497154442,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154443,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154444,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154445,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154446,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154447,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154448,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154449,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154450,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154458,"category":{"id":0,"name":"string"},"name":"test","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":1245,"category":{"id":1245,"name":"xyz"},"name":"xyz","photoUrls":["test"],"tags":[],"status":"available"},{"id":9222968140497154462,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154463,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154464,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154465,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154466,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154467,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154468,"name":"test_name","photoUrls":[],"tags":[],"status":"available"},{"id":9222968140497154469,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154470,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154471,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154472,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154473,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154474,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154475,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154476,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154477,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154478,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154479,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154480,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154481,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154491,"category":{"id":0,"name":"string"},"name":"test","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154492,"category":{"id":0,"name":"string"},"name":"test","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154497,"name":"test_name","photoUrls":[],"tags":[],"status":"available"},{"id":9222968140497154498,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154499,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154500,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"},{"id":9222968140497154501,"category":{"id":0,"name":"string"},"name":"fish","photoUrls":["string"],"tags":
.... trimmed
-------------------- pending pets --------------------
[{"id":1716,"category":{"id":101,"name":"testcategory"},"name":"getcat","photoUrls":["a.png","b.png"],"tags":[{"id":102,"name":"testtag1"},{"id":103,"name":"testtag2"}],"status":"pending"},{"id":1980,"category":{"id":101,"name":"testcategory"},"name":"getcat","photoUrls":["a.png","b.png"],"tags":[{"id":102,"name":"testtag1"},{"id":103,"name":"testtag2"}],"status":"pending"},{"id":1777,"category":{"id":101,"name":"testcategory"},"name":"getcat","photoUrls":["a.png","b.png"],"tags":[{"id":102,"name":"testtag1"},{"id":103,"name":"testtag2"}],"status":"pending"},{"id":1175,"category":{"id":101,"name":"testcategory"},"name":"getcat","photoUrls":["a.png","b.png"],"tags":[{"id":102,"name":"testtag1"},{"id":103,"name":"testtag2"}],"status":"pending"},{"id":5,"category":{"id":5,"name":"jimmy"},"name":"jimmy","photoUrls":[],"tags":[{"id":5,"name":"jimmy"}],"status":"pending"}]
-------------------- sold pets --------------------
[{"id":1117,"category":{"id":101,"name":"testcategory"},"name":"valueimplcat","photoUrls":["a.png","b.png"],"tags":[{"id":102,"name":"testtag1"},{"id":103,"name":"testtag2"}],"status":"sold"},{"id":1622,"category":{"id":101,"name":"testcategory"},"name":"valueimplcat","photoUrls":["a.png","b.png"],"tags":[{"id":102,"name":"testtag1"},{"id":103,"name":"testtag2"}],"status":"sold"}]

```

---

<div class="post-metadata">

**Author:** ![kazurayam](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/kazurayam/32/333_2.png) [@kazurayam](https://forum.katalon.com/u/kazurayam)\
**Post date:** [February 13, 2021, 2:36am UTC](https://forum.katalon.com/t/how-to-update-local-variable-at-runtime/52090/3 "2021-02-13T02:36:15Z")

</div>

@ThanhTo

I reviewed the document

> **[Parameterize a Web Service Object](https://docs.katalon.com/katalon-studio/docs/parameterize-a-web-service-object.html)**
>
> Query Parameters Only available for RESTful Web Service requests Query parameters can be added to a REST request's URL to tailor and filter the response output. When you input a URL, Katalon...

and found that this document is not enough for @zaraaq9.

This document describe how to define a TestObject (=WS RequestObject), and just that. The document does not describe how to use it. Especially it should cover how to make multiple times of request/response interactions with different parameter values.

---

<div class="post-metadata">

**Author:** ![anon46315158](https://avatars.discourse-cdn.com/v4/letter/a/73ab20/32.png) [@anon46315158](https://forum.katalon.com/u/anon46315158)\
**Post date:** [February 13, 2021, 8:59am UTC](https://forum.katalon.com/t/how-to-update-local-variable-at-runtime/52090/4 "2021-02-13T08:59:57Z")

</div>

@zaraaq9 why don’t you bind the needed value when calling the webservice from the testcase, instead of re-building the body?

@kazurayam the usage of parametrized webservice objects is explained here:

> **[Using Web Services in a Test Case](https://docs.katalon.com/katalon-studio/docs/using-web-services-in-a-test-case.html#in-test-case-editors-script-view)**
>
> Katalon Studio supports various ways to use a Web Service object in a test case. You can call the web service methods from Manual View (keywords test), Script View (test...

quote:

```auto
def response = WS.sendRequest(findTestObject([the ID of Web Service object], ["variable1": value1, "variable2": value2, ... , "variableN": valueN]))

```

---

<div class="post-metadata">

**Author:** ![zaraaq9](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/zaraaq9/32/16103_2.png) [@zaraaq9](https://forum.katalon.com/u/zaraaq9)\
**Post date:** [February 13, 2021, 7:48pm UTC](https://forum.katalon.com/t/how-to-update-local-variable-at-runtime/52090/5 "2021-02-13T19:48:03Z")

</div>

@kazurayam, Running from test is not a problem, I have been doing what you’ve described here. I wanted to learn how to do this from the object repository.
