Search code examples
jmeterjmeter-5.0

How to replace a string in a variable that came from a CSV Data Config?


In my JMeter test plan, I have two CSV Data Config elements.

  • CSV Data Config-element-requestBodies: This CSV Data Config element has a variable named "requestBody". In the corresponding CSV file, each line has an XML request with a placeholder string.

  • CSV Data Config-element-subject: variables. This CSV Data Config element has a variable name "subjectDn". In the corresponding CSV file, each line has a distinguished name (DN) for a user.

The "requestBody" variable will contain an XML request from the CSV file that has the request bodies, with a placeholder string and I want to replace that placeholder with the contents of the "subjectDn" variable, and then use the modified "requestBody" variable in the HTTP Request element.

In other words:

  1. Replace the placeholder string in the ${requestBody} with the value in the ${subjectDn}, then

  2. Use the modified ${requestBody} in the HTTP Request

How can I do that? What is the easiest/least overhead way of doing that?

I've tried using the "__evalVar" function (see https://am.net/lib/tools/NetworkManagement/apache-jmeter-2.8/printable_docs/usermanual/functions.html), but it looks like that is not able to do the replacement when the string is from a CSV file?

Thanks in advance!

Jim


Solution

  • Wrap your ${requestBody} into __eval() function, it will allow JMeter to resolve JMeter Functions and Variables which are present as "placeholders" in the CSV file to their respective values.

    ${__eval(${requestBody})}
    

    Also if you consider scripting to accomplish your requirements be informed that starting from JMeter 3.1 it's recommended to use JSR223 Test Elements and Groovy language. More information: Apache Groovy: What Is Groovy Used For?