ruby-jmeter脚本 - 使用extract regex:选项和变量值

时间:2013-12-16 20:10:51

标签: jmeter jmeter-plugins ruby-jmeter

我使用ruby-jmeter gem编写DSL脚本来进行性能测试自动化..

我发现导航到我的API网址,发布数据,断言预期结果并生成效果趋势报告非常有用。

我在使用提取正则表达式时卡住了:'',name:''ruby-jmeter中的语法。

我想要的是:我访问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 个答案:

答案 0 :(得分: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 please see this blog post

测试API的更详细示例