简体   繁体   中英

JMeter Beanshell groovy script doesn't work

I added a BeanShell Assertion to my JMeter testcase. I want to check a JSON document in JMeter from an API.

My script looks like this:

import groovy.json.*

def jsonText = '''
{
    "message": {
        "header": {
            "from": "mrhaki",
            "to": ["Groovy Users", "Java Users"]
        },
        "body": "Check out Groovy's gr8 JSON support."
    }
}      
'''

def json = new JsonSlurper().parseText(jsonText)

def header = json.message.header
assert header.from == 'mrhaki'
assert header.to[0] == 'Groovy Users'
assert header.to[1] == 'Java Users'
assert json.message.body == "Check out Groovy's gr8 JSON support."

If i'm trying to start my testcase, i got the following response in my View Results Tree:

Assertion error: true
Assertion failure: false
Assertion failure message: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval In file: inline evaluation of: ``import groovy.json.*   def jsonText = ''' {     "message": {         "header": { . . . '' Encountered "def" at line 3, column 1.

屏幕截图

How can i fix this issue?

Edit: Screenshot JSR223 Assertion 屏幕截图2

There are multiple problems with your script:

  1. Your JSON is not a valid one, you need to escape quotes
  2. Groovy assert keyword won't cause assertion failure, it will only print exception into jmeter.log file, if you need to fail assertion itself you need to use AssertionResult shorthand instead

Reference code:

def jsonText = '{\n' +
        '    "message": {\n' +
        '        "header": {\n' +
        '            "from": "mrhaki",\n' +
        '            "to": ["Groovy Users", "Java Users"]\n' +
        '        },\n' +
        '        "body": "Check out Groovy\'s gr8 JSON support."\n' +
        '    }\n' +
        '}'

def json = new groovy.json.JsonSlurper().parseText(jsonText)

def header = json.message.header
if (header.from != 'mrhaki' || header.to[0] != 'Groovy Users' || header.to[1] != 'Java Users' || json.message.body != "Check out Groovy's gr8 JSON support.") {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage('There was a problem with JSON')
}

See Groovy is the New Black article for more information on using Groovy with JMeter

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM