2017-05-24 59 views
0

我在JMeter测试用例中添加了一个BeanShell Assertion。 我想从API中检查JMeter中的JSON文档。JMeter Beanshell groovy脚本不起作用

我的剧本是这样的:

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." 

如果我想开始我的测试用例,我在我的查看结果树如下回应:

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. 

Screenshot

我该如何解决这个问题?

编辑: 截图JSR223断言 Screenshot2

+0

尝试使用JSR223断言具有相同的代码,但选择时髦的语言 – ararar

+0

如果我” m在JSR223断言中使用语言groovy尝试脚本时,我没有收到我的结果树中JSR223声明的反馈。但是测试必须失败。 – fcb1900

+0

你能解释为什么它会失败,就像你改变(assert header.to [1] =='Java Users')为(assert header.to [1] =='Java Users123123')它会失败。 – ararar

回答

1

有你的脚本多种问题:

  1. 您的JSON是不是有效的,你需要逃跑报价
  2. Groovy的assert keyword韩元” t导致断言失败,它只会打印异常到jmeter.log文件中,如果你需要断言本身,你需要使用AssertionResult sho rthand代替

参考代码:

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') 
} 

Groovy is the New Black文章的更多信息,使用Groovy用JMeter