Jmeter读取数据的规则是怎样的

Jmeter读取数据的规则是怎样的,第1张

解压下载的zip包后,将其中的mysql-connector-java-5112-binjar放到Jmeter的lib目录下

(3) 添加“配置元件”->“JDBC Connection Configuration”,设置下列参数:

Database URL:jdbc:mysql://host:port/db(如jdbc:mysql://localhost:3306/testlink

JDBC Driver class:commysqljdbcDriver

username:连接数据库的用户名(如root)

password:连接数据库的密码

(4)添加“Sampler”->“JDBC Request”,在SQL Query中输入查询语句,如下:

SELECT CONCAT (“[",

GROUP_CONCAT(

CONCAT("{username:'",login,"'"),

CONCAT("{password:'",password),"'}"),"]“) AS json FROM users

(5)在44中的JDBC请求中添加“后置处理器”->“正则表达式提取器”,以提取34中的用户名和密码为例设置正则表达式提取器的参数:

引用名称:user

正则表达式:username:’(+)’\{password:’(+)’

模板:$1$$2$

使用时,user_g1即为用户名,user_g2即为对应用户名的密码;更多正则表达式提取方法参见Jmeter正则表达式提取器

正则表达式:(<=\"access_token\":)\"(+)\"

取第一捕获组的数据,就行了

完整的Java程序如下:

import javautilregexMatcher;

import javautilregexPattern;

public class FFF {

 public static void main(String[] args) {

  String s="{\"access_token\":\"a33ae898c0a012d8033cb24df69c786b\",\"token_type\":\"client_credentials\",\"expires_in\":3600,\"example_parameter\":null}";

  String regex="(<=\"access_token\":)\"(+)\"";

  Pattern p=Patterncompile(regex);

  Matcher m=pmatcher(s);

  while(mfind()){

   Systemoutprintln(mgroup(1));

  }

 }

}

运行结果:

a33ae898c0a012d8033cb24df69c786b

其实用json对象解析更简单,完整的Java程序如下:

import orgjsonJSONObject;

public class FFF {

 public static void main(String[] args) {

  String s="{\"access_token\":\"a33ae898c0a012d8033cb24df69c786b\",\"token_type\":\"client_credentials\",\"expires_in\":3600,\"example_parameter\":null}";

  JSONObject jsonObj = new JSONObject(s);

  String str=(String) jsonObjget("access_token");

  Systemoutprintln(str);

 }

}

运行结果:

a33ae898c0a012d8033cb24df69c786b

如我们要断言返回值的json中

{"name":"Simpsons family","members":[{"firstName":"Homer", "lastName":"Simpson"},{"firstName":"Marge", "lastName":"Simpson"},{"firstName":"Bart", "lastName":"Simpson"},{"firstName":"Lisa", "lastName":"Simpson"},{"firstName":"Maggie", "lastName":"Simpson"}]}

中members的第三条firstName的值等于Bart

则添加一个jp@gc - JSON Path Assertion断言

JSON Path 输入框填写$members[2]firstName

Expected Value 输入框填写 Bart

超文本传输协议(>

1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了>

在进行性能测试执行之前,需要进行场景的设计:

以什么方式启动,如何持续进行,直至测试结束

三部曲:启动---持续进行---结束

PS:一般情况下,建议限制Jmeter的的线程数在300及以内,这样能更好的发挥出jmeter的性能

测试步骤:

测试计划---线程组-->

参数关联(即接口依赖),例如场景1:系统的其他功能需要登录接口返回的token或者sessionid(后面的接口需要用到前面接口返回的信息)

这就需要提取上个接口返回信息中的数据。

①将返回的数据使用json path tester转化为json格式,使用JSON Path Expression,提取返回json数据的表达式有绝对路径和相对路径之分:

绝对路径:$变量名 

相对路径:$变量名

如果是嵌套的数据,使用一级级往里面取就行了,例如:{"key1":{"key2":{"key3":"xxxxx"}}},提取式:$key1key2key3,如果是这种格式的{"data":[{"key1":"value1","key2":"value1"},

{"key3":"value1","key4":"value1"}

]}

提取表达式需要根据下标取提取:$data[下标值]key

上面的数据格式如果使用绝对路径提取表达式写为:$data[1]key3     相对路径的提取表达式写为:$key3

②将数据提取出来后,在需要依赖上个接口数据的接口请求中,添加--后置处理器--JSON取样器

③ 提取单个值: 在需要提取返回数据的接口下添加json提取器(例如充值接口需要提取登录接口中需要的数据,那么就需要在登录接口中添加json提取器,自己第一次将json提取器添加到充值接口中,导致提取不到数据,实际就是json 提取器添加错了)

将json提取器添加到登录接口,就可以提取登录后的token值了(注意:要提取哪个接口的返回的数据,就添加在哪个接口下)

json表达式相对路径和绝对路径,第一种方式$datatoken_infotoken ;第二种$token

将登录接口中提取的token值,将表达式放在充值接口中,下次充值接口发送请求就会携带token信息

充值接口发送请求后会携带token信息,请求成功

④ 提取多个值:提取表达式之间使用;间隔开,一定要设置默认的值,不然会导致数据提取不出来,如果取不到值那么就会返回设置的默认值。

2正则表达式提取器

经常有接口可能返回这种类型数据,我们需要提取data中的某个key的值,因为data对应的值是字符串格式的,那么这时候就只能使用正则表达式提取器提取其中的信息。

例如要提取返回相应数据中的code的值

在正则表达式提取器中,设置引用名称,填写正则表达式,模板:$1$代表去第一个括号的值

提取多个值

提取成功,但是提取的两个值进行拼接后赋值给了recode,如果要将两个值单独拿出来使用,使用:变量名_g1,变量名_g2方式获取值,使用recode_g1和recode_g2,这两个数据是将recode的数据进行拆分所以可以单独使用。

以上就是关于Jmeter读取数据的规则是怎样的全部的内容,包括:Jmeter读取数据的规则是怎样的、如何用正则表达式提取url返回的jason数值、使用jmeter做接口测试,怎么验证,核对响应结果中json的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9539102.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存