JMeter Beanshell groovy script doesn't work

纵然是瞬间 提交于 2019-12-13 07:34:03

问题


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


回答1:


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



来源:https://stackoverflow.com/questions/44153653/jmeter-beanshell-groovy-script-doesnt-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!