Use request value from list of values in JMeter
Solution 1
There are several ways you can do this.
- If you're only incrementing, you can use a counter element
- You can use any number of functions to calculate the value
- You can read from a CSV file, which is the same effect as "StringFromFile" but easier to customize and manipulate
Given you have an array of values you could:
- Try the pre-processor "User Parameters", creating one entry for each user/loop
- Use a Beanshell script to create the array, select one at random and populate your variable
You reference them exactly as you have listed: ${varName}
Solution 2
Concerning implementing ${__StringFromArrayAtRandomIndex('3', '2', '54', '42')}
.
Suppose you can easily implement your scenario using e.g. BeanShell Sampler / BeanShell PostProcessor with a bit of code.
E.g.:
-
Set your source variable (via e.g. User Defined Variables):
Name Value categories 3,2,54,42,37
(i.e. use comma as delimiter, no spaces before and after comma).
-
Use add BeanShell Sampler/PostProcessor with the following code:
import java.util.Random; String[] categories = (vars.get("categories")).split(","); int idx = new Random().nextInt(categories.length); String category = (categories[idx]); vars.put("categoryId", category);
- Refer further in the script randomly picked form list value as
${categoryId}
.
Solution 3
To obtain a random variable value from a list, first declare as User variables the list or available values, with a prefix and a incremental index:
country_1 Spain
country_2 France
country_3 Portugal
country_4 Italy
country_5 England
Then you can obtain a random value from the list concatenating the prefix with a random index in the interval:
${__V(country_${__Random(1,6,)})} --> "Spain", "France", "Portugal", etc...
Take a look to this answer for complete explanation.
Christian Seifert
German software engineer and architect, team lead, requirements engineer, business analyst and conference speaker (https://www.youtube.com/channel/UCrjgSZYxhyAOJibUOkuWJLw)
Updated on September 12, 2020Comments
-
Christian Seifert almost 4 years
I'm sure I've already done this in the past but somehow I cannot figure out how ;-) So, here's my problem:
I'm trying to create a JUnit test plan in which a HTTP request is modified each iteration by altering a specific parameter. So, for example in five iterations I want the following HTTP requests to be made:
http://localhost:8080/test/foo.html?id=1 http://localhost:8080/test/foo.html?id=2 http://localhost:8080/test/foo.html?id=3 http://localhost:8080/test/foo.html?id=4 ...
I want to configure the identifier values globally for the test plan and use them within the HTTP request samplerer like this:
Path: /test/foo.html?id=${categoryId}
The question now: How do I configure the identifiers values globally (I do not want to use
StringFromFile
) and how do I reference them in the sampler?