2013-12-16 52 views
1

蔭使用紅寶石JMeter的寶石寫做性能測試自動化腳本DSL ..紅寶石JMeter的腳本 - 使用正則表達式提取物:選項和可變值

我覺得這是非常有用的導航到我的API網址,發佈數據,爲預期結果斷言並生成性能趨勢報告。

Iam在使用提取正則表達式時遇到問題:ruby-jmeter中的'',name:'語法。

我想要類似於:我訪問http :// domain/api/user?q=create,我發佈原始JSON數據作爲輸入,我得到所需的JSON響應。我想提取此響應模式和動態使用該值,這樣我可以將它作爲輸入到我的生JSON輸入訪問http: //domain/api/user?q=read
基本上我是想:

visit name: 'CreateUser', url: "<url link>",<br> 
     method: "post",<br> 
     domain: "<domain>",<br> 
     path: 'api/user?q=create', <br> 
     raw_body: <input json> do<br> 
     #extract a pattern from response<br> 
     extract regex: '"Username":"(.+?)"', name: 'userName'<br> 
     puts '${userName}'<br> 
     # rest of code here.. <br> 
     # I want to use ${username} as input to my next Visit call<br> 
end 




有人可以看看ruby-jmeter幫我在這裏嗎?

謝謝, Vishi。

回答

1

Ruby-JMeter是一個DSL,它只在生成測試計劃(.jmx)時評估ruby代碼,它不會同時運行測試計劃和評估ruby代碼。

在您的例子,這將產生JMeter的正則表達式提取:

extract regex: '"Username":"(.+?)"', name: 'userName' 

以下Ruby代碼不會知道$ {}風格JMeter的變量什麼:

puts '${userName}' 

如果正則表達式匹配,則相關的${userName} JMeter變量將被設置,並且您應該能夠在隨後的請求中使用它:

visit name: 'users', url: '/api/user?q=${userName}' 

更詳細的示例用Ruby測試API please see this blog post