Jmeter常用获取数据的几种方式

本文详细介绍了如何通过手动写入、用户自定义变量、文件读取、数据库操作以及正则表达式和json/xpath提取数据。涵盖了从基础到进阶的技巧,包括随机数、计数器和时间戳的应用,以及如何利用存储的登录信息进行压力测试优化。
摘要由CSDN通过智能技术生成

1、手动写入

所有可以固定的参数,我们都可以通过手动写入的方式。例如:HTTP信息头管理器中的Content-Type的值是application/json,通过手动写入的方式来获得数据。

2、添加用户自定义变量

3、读取文件

CSV Data Set Config可以从指定文件中读取数据,filename即文件路径,Variable Names即做为变量名。如果有多列就写多个,逗号隔开。


4、从数据库中读取

连接数据库:

 执行sql,获取数据:

5、正则表达式提取器 【括号里面的表示要提取的内容】

正则表达式:用于将需要的数据提取出来。模板: 表示要提取第几个值,$1$,1表示第一个,$2$,2表示第二个。匹配数据: 0表示随机,1表示全部。缺省值:匹配不到的默认值。


"sn":"(.*?)"   #非贪婪模式(含有?),贪婪模式(不含?)

贪婪与非贪婪模式是两种不同的表达式匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。 

eg:
{"error":0,"sn":"F11215456251923190","redirect":"\/index.php?r=hot%2Forder%2Fpayment&sn=F11215456251923190"}
"sn":"(.*)" ,贪婪模式得到的结果:F11215456251923190","redirect":"\/index.php?r=hot%2Forder%2Fpayment&sn=F11215456251923190"
"sn":"(.*?)" ,非贪婪模式得到的结果:F11215456251923190

进阶匹配问题

1)如何获取数组结果?

如果有多个匹配的结果,则获取到的是个数组,此时若要提取其中的内容,调用方式为${ bizSeqNo _1},$...,如果想要得到匹配出的结果的个数,用$,如果想随机选取一个,只需要将匹配数字设为0,使用$调用即可。

2)如何获取唯一的匹配结果?

如果想要避免上面获取多种结果的情况,则需要注意把正则表达式写成非贪婪模式,或者增加正则表达式的前后边界,使结果唯一匹配既可。

6、json提取器

Names of created variables,写入变量名,多个变量名用英文分号分隔。JSON Path中写入json的格式,多个格式用英文分号分隔,例如:$.data.id,
返回信息是json格式

7、Xpath提取器

使用场景:仅适用于返回数据为html格式的数据

Xpath语法:
//a[@class="postTitle2"]/text()
另外表达式://a[@class="postTitle2"],去掉/text()也是可以的,大家可以自己试试
//*[@class='postTitle2']/@href 从根目录下定位所有class=postTitle2的href值
//*[@class='postTitle2'] 从根目录下定位所有class=postTitle2标签内的文本
//a[contains(@class,'postTitle2')] 从根目录下a标签的class值中包含postTitle2的节点
substring-before(.//*[@class='postTitle2']/text(),'基础') 返回根目录下[@class='postTitle2']/text()中第一个'基础'前面的部分,如果不存在'基础',则返回空值

 

XML Parsing Options:要解析的XML参数

         Use Tidy:当需要处理的页面是HTML格式时,必须选中该选项;如果是XML或XHTML格式(例如RSS返回),则取消选中;

        Quiet表示只显示需要的HTML页面,Report errors表示显示响应报错,Show warnings表示显示警告;

         Use Namespaces:如果启用该选项,后续的XML解析器将使用命名空间来分辨;

         Validate XML:根据页面元素模式进行检查解析;

         Ignore Whitespace:忽略空白内容;

         Fetch external DTDs:如果选中该项,外部将使用DTD规则来获取页面内容;

8、使用随机数和计数器

在配置元件中的随机变量和计数器,非常好用。随机变量控件中,输入最大和最小值,变量名称和输出格式。计数器空间中,输入最大和最小值,递增频率和引用名称

9、用时间戳做为变量

有时候随机数可能不能满足我们对于参数的要求,我们可以采用时间戳+随机数的方式,大大减低数据重复的可能性。

${__time(,)} : 默认该公式精确到毫秒级别, 13位数

10、返回值存入文件再使用

前面我们说了采用正则表达式提取器和json提取器来传递参数,能满足我们大部分场景,当使用场景如下时就会显得不那么好用了:在压力测试时,我们需要每个用户都是登录情况下操作。如果我们在前面调用登录接口,势必大大影响整个系统的处理能力,这样不能能客观得到接口的性能。

我们可以采用如下处理方式,在setUp线程组中批量注册或者登陆一批用户(当然总数是够跑一次测试的),把他们的登录信息存入一个文档。在主线程组中再把他们从文件中读取处理,放入headers中,执行下单请求测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值