您的位置:首页 > 其它

JMeter之正则表达式提取器

2014-07-24 12:02 176 查看
以网页交易平台为例子,说明正则表达式提取器如何工作。

业务逻辑是这样子的:

login页面输入账号、密码登陆,服务器返回一个token。
3秒内使用账号和token想服务器发请求,服务器开始通过websocket不断推送报价信息。
通过网页下单,实际就是想服务器发一个请求,包含订单信息和账户信息,也是需要带上token标识身份。
最后退出登录。
导入badboy录制的脚本(删减一些与业务逻辑关系不密切的请求)。



login的请求:



路径:/rest/%7B%22MT%22:%22Login%22,%22UserInfo%22:%7B%22login%22:7,%22password%22:%22TEST1%22%7D%7D
请求的内容就是通过编码后的路径发送到服务器的,通过网上的URL解码工具可以得到发送的内容就是:
/rest/{"MT":"Login","UserInfo":{"login":7,"password":"TEST1"}}
这个请求发送过去之后,服务器会返回以下登陆信息,通过添加“监听器-查看结果树”可以在运行脚本之后查看相应数据。
login请求的相应数据:
{"Tok":"05a9c08d77864b779435fea53780df7c","UserInfo":{"enable_change_password":1,"balance":1002898.62,"prevbalance":1002898.62,"enable_read_only":0,"name":"TEST1","enable":1,"login":7,"leverage":100,"group":"demoforex","credit":8888,"password":"TEST1","agent_account":0},"ConGroup":{"margin_type":0,"group":"demoforex","interestrate":0,"currency":"USD"},"ConCommon":{"timezone":8},"MT":"Login","MarginInfo":{"free_margin":1004089.81776393,"equity":1009823.05,"margin":5733.232236069749}}

这个就是服务器返回的token"05a9c08d77864b779435fea53780df7c",这次的工作就是要提取它,并存入变量供其他请求使用。

添加正则表达式提取器
对login右键,添加-后置处理器-正则表达式提取器



名称:要取有意义的名字,方便记忆

引用名称:这里的名称要作为变量的名称,在别的地方被引用

正则表达式:正则表达式中()括起来的部分就是要提取的。.代表任意字符,+代表出现任意次,后面加?。

模板:$1$代表只有一组数据

匹配数字:0代表随机取值,1代表全部取值,通常情况下填0,如果在LR中,取出的值是一个数组,还得处理一下,LR11版本用一个随机的函数就可以不用写大段的代码来处理数组

缺省值:如果参数没有取得到值,那默认给一个值让它取

替换
上面的步骤已经获取到token的值,接下来就是把所有出现token的地方用变量替换。${ }可以引用变量的值,如${Tok}。

录制获取的loggout的路径是:
/rest/%7B%22MT%22:%22Logout%22,%22Desc%22:%22Logout%22,%22Tok%22:%2218502d780d624cfab77b402d6596fc21%22%7D,
用变量把地址中的tok的值替换后:
/rest/%7B%22MT%22:%22Logout%22,%22Desc%22:%22Logout%22,%22Tok%22:%22${Tok}%22%7D

验证
替换后运行脚本,查看结果树的相应数据,可以看到原来固定不变的tok的值在每次运行后都会变化,并且等于login的相应数据中的tokde值,这样就代表正确。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: