当前位置:网站首页>JMeter初探五-配置元件与参数化

JMeter初探五-配置元件与参数化

2022-08-09 09:11:00 止语---

目录

1.HTTP Header Manager(信息头管理器)

 2.HTTP Cookie Manager(cookie管理器)

3.CSV Data Set Config


所谓配置元件可以理解为Jmeter中的一些基本操作。JMeter提供了丰富的配置元件,常用的包括参数化配置元件、HTTP请求默认值、HTTP信息头管理器、计数器等,这些配置元件用于设置默认值和变量,提供给后面的sampler(取样器)使用。

结合实际问题,开始参数化配置元件的介绍。推荐一个可以用于练习的公测地址

1.HTTP Header Manager(信息头管理器)

在接口文档中,获取所有学生信息 说明如下:

请求URL:

  • http://api.nnzhp.cn/api/user/all_stu

请求方式:

  • get

需要添加header信息,key为Referer value 为http://api.nnzhp.cn/

参数:

Refer的意义在于告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理,钓鱼网站。

当然配置元件这里还有一个是http请求默认值 

 2.HTTP Cookie Manager(cookie管理器)

结合 学生金币充值 这个场景,介绍cookie管理器,cookie,session,token是常见的几种客户端绘话连接的认证方式。

简要描述:

  • 学生金币充值接口,这个接口是为了讲添加cookie以及身份验证的

请求URL:

  • http://api.nnzhp.cn/api/user/gold_add

请求方式:

  • post

参数:

该接口有权限验证,需要admin用户才可以做操作,需要添加cookie

cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign

使用登录接口进行登录

在结果树种返回的sign即是需要在学生金币充值使用的作为cookie携带给服务端的信息之一

添加学生金币充值接口和cookie管理器

这里就是从登录接口获取的参数用于下一个接口中,可以直接在Cookie中手动添加,但是实际情况时候每一个cookie都有时间有效性,因此需要将响应登录接口中的sign作为参数传递给gold_add学生金币充值接口。

注意到返回的数据都是json格式,自然很容易就想到使用json path 提取器进行操作,因此针对学生金币充值的过程有以下思路:

  1. 完成登陆,在返回接口提取到sign参数
  2. 将sign参数加入到学生金币充值接口的Cookie管理器中 

在响应结果树中先提取sign,在JSON Path Expression中输入$.login_info['sign'] ,$表示根元素,然后一级级属性往下去找,先找到login_info,再往下子节点找到sin;响应接口中的sign是唯一的,因此也可以携程$..id或者是$.login_info.id

 经过上述尝试之后,可以使用$.login_info.sign进行提取sign,因此登陆接口中添加JSON提取器,在查看结果树种查询登陆的结果

 

当然这里的JSON Path expressions可以一次性匹配多个值,比如这里需要提取sign和userID

 参数详解:

Apply to应用范围
Names of created variables 接收值的变量名,自定义,多个变量用分号分隔 
JSON Path expressionjson path表达式,也是用分号分隔 
Match No.(0 for Random)0表示随机;n取第几个匹配值;-1匹配所有。若只要获取到匹配的第一个值,则填写1
Compute concatenation var(suffix_ALL)如果找到许多结果,则插件将使用' , '分隔符将它们连接起来,并将其存储在名为<variable name> _ALL的var中
Default Values缺省值,匹配不到值的时候取该值,可写error。如果是多个提取表达式,这里需要填写

同时新增一个Debug Sampler,顾名思义,调试使用的Debug

运行之后,查看变量getCookie结果如下

当然这里为了调试,也可以在登录接口加入后置处理器Debug postprocesspor

 接着讲学生充值金币接口中Cookie管理器中的值使用上述步骤中定义的getCookie进行替换即可

 这个方法在包括登录验证token,cookie中十分有用。

3.CSV Data Set Config

参数化配置元件主要用于JMeter引用外部的数据,通过该元件进行一些配置,如果是否去除标题栏,使用指定数据分隔符等。线程组右键/添加/配置元件/CSV Data Set Config,就创建了一个CSV

参数详解 

参 数描 述必 须
Name脚本中显示的这个元件的描述性名称
Filename文件名。待读取文件的名称。可以写入绝对路径,也可以写入相对路径(相对于bin目录),如果直接写文件名,则该文件要放在bin目录中。对于分布式测试,主机和远程机中相应目录下应该有相同的CSV文件
File Encoding文件编码。文件读取时的编码格式,不填则使用操作系统的编码格式
Variable Names变量名称。多个变量名之间必须用分隔符分隔。如果该项为空,则文件首行会被读取并解析为列名列表
Ignore first line是否忽略首行?如果csv文件中没有表头,则选择false
Delimiter分隔符。将一行数据分隔成多个变量,默认为逗号,也可以使用“\t”。如果一行数据分隔后的值比Vairable Names中定义的变量少,这些变量将保留以前的值(如果有值的话)
Allow quoted data?是否允许变量使用双引号?允许的话,变量将可以括在双引号内,并且这些变量名可以包含分隔符
Recycle on EOF?遇到文件结束符是否再次循环?默认为 true
Stop thread on EOF?遇到文件结束符是否停止线程?默认为 true
Recycle on EOF?当Recycle on EOF为False时,停止线程,当Recycle on EOF为True时,此项无意义,默认为 false
Sharing mode线程共享模式。1、All threads(默认):一个线程组内,各个线程(用户)唯一顺序取值;2、current thread:一个线程组内,各个线程(用户)各自顺序取值;3、线程组各自独立,但每个线程组内各个线程(用户)唯一顺序取值;

设置线程组的个数

其中csv.txt文件中的数据如下:

username password
zhangsan      [email protected]#$
lisi             [email protected]#$
王二    [email protected]#$
码农  [email protected]@dk

运行之后,查看结果树如下:

 

原网站

版权声明
本文为[止语---]所创,转载请带上原文链接,感谢
https://blog.csdn.net/rhx_qiuzhi/article/details/110286927