Remove quotes from JMeter variables in request body - jmeter

I am trying to generate POST request in Jmeter:
My Body Data looks like this:
{"query": "{getSingleArticle(id: ${art_id}){MatlDesc, ClassDesc}}"}
The resulting request is the this:
{"query": "{getSingleArticle(id: "123456789"){MatlDesc, ClassDesc}}"}
how do I get rid of the quotes around the number?

You shouldn't have quotes in variable value normally, so check if you can remove quotes in variable's definition/regex/csv record, if you can't use __groovy to remove quotes before request:
${__groovy( vars.put("art_id"\,vars.get("art_id").replaceAll("\""\,"")) )}
Or use similar code inside JSR223 PreProcessor which will be a child to request
vars.put("art_id"\,vars.get("art_id").replaceAll("\""\,""));

You can use __strReplace() function for this like:
${__strReplace(${art_id},",,)}
The function can be installed as a part of Custom JMeter Functions bundle using JMeter Plugins Manager

Related

JMeter how to select randomely from a extracted set of values

I have a requirement to use randome url from a url list I extract from a json response.
Say I extract them in this mannser
imageUrls_1=https://blah01.com
imageUrls_2=https://blah02.com
imageUrls_3=https://blah03.com
imageUrls_4=https://blah04.com
imageURLs_matchNr=4
In a following JSSR223 sampler I was able to generate a variable called "url" with one of the url names selected randomely
("imageUrls_1","imageUrls_2",etc)
I was thinking to use them in my HTTP request to get the correcponding url as follows. ${${url}}. But soon found out its not giving me anything other than "${${url}}" :(.
JMeter Is it possible to place a varibale inside a varible name?
Basically I need to use one of the extracted urls randomely in my HTTP request.
The easiest way is going for __V() and __Random() functions combination like:
${__V(imageUrls_${__Random(1,${imageURLs_matchNr},)},)}
Demo:
More information: Here’s What to Do to Combine Multiple JMeter Variables
Use __V function
${__V(url)}
The V (variable) function returns the result of evaluating a variable name expression.

Preprocessor variables are not available on websocket request

I'm adding a variable on a BeanShell Preprocessor:
vars.put("var",value).
I use it on a WebSocket request:
${var}.
When I send the request, the request body contains '${var}' instead of the value itself.
I tried to use also JSR223 Preprocessor.
I tried to put on the request '${_V(value)' and put it as property but nothing is working
Try using JSR223 Sampler, and this is where you build your logic to initialize the value of your variable. Your variable will be looking like vars.put("var",value);
And after that you can reference the variable from different places in your script like ${var).
I'm using ${var}, not ${value}. (I fixed the question).
Still waiting for answers please
For your issue use statement like:
vars.put("var", vars.get("value")); //Then you can use ${var} elsewhere
Always use a Debug Sampler with View Results Tree for debugging.

How to Map RegEx variables with BodyData fetched from CSV Files

CSV Data Config from JMeter contains following -
File.csv Contains following
GetAllOrderItems.txt contains following
{"dataRows":[],"orderGuid":"${orderGuid_1_g1}","facilityPk":"0","jtStartIndex":0,"jtPageSize":100,"jtSorting":"SKU ASC","isMap":"1"}
orderGuid_1_g1 is fetched from Regular Expression extractor
I passed following to JMeter body data
When I execute JMeter test, I can see follwing
{"dataRows":[],"orderGuid":"${orderGuid_1_g1}","facilityPk":"0","jtStartIndex":0,"jtPageSize":100,"jtSorting":"SKU ASC","isMap":"1"}
However, I want ${orderGuid_1_g1} to be fetched from Reg Ex of previous HTTP Request.
I want following
{"dataRows":[],"orderGuid":"644e1dd7-2a7f-18fb-b8ed-ed78c3f92c2b","facilityPk":"0","jtStartIndex":0,"jtPageSize":100,"jtSorting":"SKU ASC","isMap":"1"}
Code works well, If i did not fetch Body data from text and directly insert below code inside body of HTTP Request
{"dataRows":[],"orderGuid":"${orderGuid_1_g1}","facilityPk":"0","jtStartIndex":0,"jtPageSize":100,"jtSorting":"SKU ASC","isMap":"1"}
If your file contains nested JMeter Variables you need to wrap your __FileToString() function call in __eval() function like:
${__eval(${__FileToString(${GetAllOrderItems})})}
Demo:
More information: Here’s What to Do to Combine Multiple JMeter Variables
JMeter does not interpret variables when you load content from a file.
Besides, for a load test using __FileToString function is not advised unless it is used for setup for example which is not the case here.
So just put the JSON Body request in the request body, it will be better for readability.
If you still want to do that, follow Dmitri Answer.

Dynamic variables use with file upload as in the body of the HTTP request JMeter

I am uploading a file [.xml] to be the body of the POSt HTTP request. But the file has a variable ${TEVAM} whose value is being fetched from the previous request and being assigned.
But the value is not being replaced.
What should I use here?
In order to get the nested variables resolved you need to use __eval() function as a wrapper for i.e. __FileToString() function like:
${__eval(${__FileToString(test.xml,,)})}
More information: Here’s What to Do to Combine Multiple JMeter Variables

Extractor expression JMeter

I'm looking for a way to get the value of a post processing and play on other requests without having to extract that value again,
My question is, is it possible to do this?
I'm already desperate.
The value I need to pass is the one in the image
I need to put in this requisition
There are several post processors
For Regular Expression Extractor/XPath Extractor or CSS/JQuery Extractor: Reference Name is the variable saved e.g. a and then you can use it as ${a}
For JSR223 PostProcessor you can add vars.put("a", value); and then use it as ${a}
If you need global variable use property by adding: props.put("a", value); and get it later with: ${__P(a)}
In your case add your variable to Body Data: info_s"="${txtinfoInforma}" ...

Resources