Postman Sending Requests based on Environment value - postman

I have an environment variable in the Request URL as https://api-{{environment}}.{{domain}}.com/api/ , how can I use them in sending requests from scripts ?
'https://api-("environment").("domain").com/api/ doesnt work , Any helps please

you can use pm.environment.get('environmentvaraiblename') to access the value of a vaeraible inside script
you can call it within the string using string literal in java script or just concatenate using +
`https://api-${pm.environment.get("environment")}.${pm.environment.get("domain")}.com`
note that the quote is not single quote (') but (`)

Related

Escape or Ignore Postman Variables

I'm trying to send the following (literal) text in a request body in Postman:
{
"message": "Hi {{USERNAME}} your code is {{CODE}}"
}
However, in my Postman environment I have a USERNAME variable, so Postman is substituting in the variable value and the following hits my backend (note that I don't have a CODE variable in Postman):
{
"message": "Hi username_value_in_postman your code is {{CODE}}"
}
So I'm looking for a way to escape or ignore the Postman variable syntax so that it sends the literal string. I've searched the docs and SO, but didn't find anything useful for my problem, so any help would be appreciated.
Escaping doesn't seem to work, so I guess you'd either need to rename your variable(s) or use Pre-request and Tests scripts:
In Pre-resuqest script, you can write this code:
pm.variables.set('usernameBackup', pm.variables.get('USERNAME'));
pm.environment.unset('USERNAME');
And you set the environment variable again in the Tests script:
pm.environment.set('USERNAME', pm.variables.get('usernameBackup'));
pm.variables.unset('usernameBackup');

Jmeter Backend Listener groovy issues

I'm trying to add a JMeter backend listener to my JMeter project so I can have all the metrics in real-time in Graphite. My tests run distributed on several nodes and I want to know the hostname in as part of the graphite path. I tried to incorporate JSR223 scripts, but those are not evaluated before the listeners start, so I used the __groovy() method for the rootMetricsPrefix field, like this:
${__groovy(vars.get(vars.get("environment")+".graphiteprefix"))}.server.
${__groovy(InetAddress.getLocalHost().getHostName()
.replaceAll(/^([^.]*).*$/){m,host->return host})}.
myappbucket.jmeter.
The first part gets the variable with the name "environment" to get the root prefix for the environment ("test", "load", etc). The seconds __groovy() script should get the first part of the hostname. It works if I add it as a JSR223 sampler (to test it), but if I try to use it as a variable, I get the following error:
Script13.groovy: 1: expecting '}', found '' # line 1, column 67.
me().replaceAll(/^(^\.).*$/){m
^
1 error
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:158) ~[groovy-all-2.4.13.jar:2.4.13]
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233) ~[?:1.8.0_152]
at org.apache.jmeter.functions.Groovy.execute(Groovy.java:121) [ApacheJMeter_functions.jar:4.0 r1823414]
at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:137) [ApacheJMeter_core.jar:4.0 r1823414]
According to JMeter documentation:
If a function parameter contains a comma, then be sure to escape this with "\", otherwise JMeter will treat it as a parameter delimiter. For example:
${__time(EEE\, d MMM yyyy)}
So you need to escape the comma between m and host
${__groovy(InetAddress.getLocalHost().getHostName() .replaceAll(/^(^\.).*$/){m\,host->return host})}. myappbucket.jmeter.
Also be aware of __machineName() and __machineIP() functions, they provide a little bit easier way of getting the hostname and IP address of the JMeter Engine. See Apache JMeter Functions - An Introduction article for more comprehensive information on JMeter Functions

How to avoid backslash in middle of a regular expression extracted value Load runner and sent in the Request body parameter

In response, an authentication value consists of \ to escape / in parameter so while capturing parameter it is getting "\" in middle as well but in subsequent request need to send with out "\" is there any way to do this in LoadRunner
Example :-
web_reg_save_param_ex(
"ParamName=pValue",
"LB=Value:",
"RB=\"",
SEARCH_FILTERS,
"Scope=Body",
LAST);
Captured Value is AdfjshxnjkAKLDKLJlk\/ghg
Required value is AdfjshxnjkAKLDKLJlk/ghg
How to remove \ this from the value.
Is there any load runner inbuilt functions for this.
I had a similar problem that I solved by storing the correlated parameter as a string variable and then using a replace function to parse and replace the characters I didn't need.
Only problem is I was using JavaScript as my scripting language in VuGen so my code specifics wouldn't help you much. You might see about doing the same thing with C, or if switching to JS is plausible for you, mine looked similar to this:
var str = lr.evalString("{correlated_parameter}")
var corrected_string = str.replace(/\\/g, '');
My code used a different regular expression, but I think I have the syntax right for what you're trying to do, but I haven't tried this exact string of course.
Here's a link to another SO thread with more details on using the replace function.

JMeter '&' Character not Encoded as '&' in the URL

When request extracts a URL variable from XML document through XPath Extractor and Regular Expression Extractor it decodes the encoded characters in the extracted URL.
For example, the URL in the XML file:
<url>www.testing.com/test/request?parameter1=test1&parameter2=test2</url>
The & between the two URL parameters become & which affect my testing final results.
Is there any way to prevent special characters decoding in JMeter?
Normally JMeter should not perform encoding and decoding of variables during extraction, the variable should be sent as is so most probably something is wrong with your test logic. You can double check the variable value using Debug Sampler and View Results Tree listener combination. See How to Debug your Apache JMeter Script article for more information on JMeter tests troubleshooting.
As a workaround you can explicitly tell JMeter to encode the variable using __escapeHtml() function like:
${__escapeHtml(${your_variable_here})}

Querying string with apostrophe in Cloud Search

I have string 'Vick's' that I need to pass to the cloud search using the API. But when I passing it to the API it throws an error. When I am using 'Vick&apos;s' instead of Vick's as a search string it is not giving exact result. The search for on the other hand 'Vick%27s' is working fine.
When I am in the Amazon and doing some searches there, they turn out fine for "Vick's" and "Vick\'s". I am using Amazing Cloud Search wrapper, which written in C#.
My question is: How to querying string with apostrophe in cloud search?
You'll need to prepend your ' with a slash (\'). And if you're using Java, and you're doing replaceAll, you'll need to do something along the lines of .replaceAll("'", "\\'") (4 slashes - even though only 2 appear here!).
Hope it helps!