2017-05-24 57 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