SI'm trying to test a JSON value that may be = null.
First I tried using jp@gc - JSON Path Assertion. but that doesn't appear to return anything or define the variable if it encounters a null value.
So I was trying to get it to work like this:
- use jp@gc - JSON Path Extractor to try to extract the value to a variable.
- use Beanshell Assertion to test to see if the variable exists or has a null value
- If the variable does not exist, or exists and has a null value, I know that the JSON value was null.
I haven't written any scripts with Jmeter before, so I may be doing something obviously wrong, but here is what I've tried in the Beanshell Assertion:
try {
String myValue = vars.get("myValue");
log.info("myValue =" + myValue);
}
catch (e) {
log.info( "caught exception: "+e );
String myValue = null;
}
if (myValue.length() > 0 && myValue != 0 ){
Failure = true;
FailureMessage = "myValue was " + myValue + ".";
}
else{
Failure = false;
}
For this test, a null value actually passes the test.
The problem I'm running into is that the try/catch block doesn't work. Instead, I see the following message in the log:
jmeter.assertions.BeanShellAssertion: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import org.apache.jmeter.util.JMeterUtils; try { //myValue = JMeterUtils.get . . . '' : Attempt to resolve method: length() on undefined variable or class name: myValue
Can anyone tell me what I'm doing wrong and/or how to get this test of a null JSON value to work?
You'll need to amend your code.
myValue
string isn't defined, you need to make it more "global"Correct code will look as simple as follows:
http://jmeter-plugins.org/wiki/JSONPathAssertion/
Since v.1.2.1 of jp@gc - JSON Path Assertion it is possible to validate against null value. It's not stable version at the moment of writing this comment, though. It can be downloaded from here: http://jmeter-plugins.org/downloads/all/#Developer-Snapshots
There are many wrong things in this code;
myValue
. That's because it is defined within the try-catch block. To fix, you have to declareString myValue
before the try-catch block. But...vars
won't throw any Exception but will return null when the given key does not exist.myValue
is not null, usemyValue != null
.Here's the updated code: