jmeter接口测试(2)
一、断言:
1、响应断言:
响应断言主要用于验证响应数据和协议状态码
例:
当我们搜索一个不存在的产品时,它的响应结果为空:
这时我们用到的断言是 响应断言 断言响应结果中包含某个字符:
json在线:
https://www.bejson.com/jsonviewernew/
二、参数化
相同的测试步骤,不同的测试数据,把这些不同的测试数据放到txt记事本中,在测试用例中直接调用。比如针对测试平台,想使用不同的用户登录进去后,来验证产品管理的业务,这里使用不同的用户,那么步骤相同 数据不同,就把这些数据放出来管理。
方式1、CSV Data Set Config
在CSV数据文件设置中,说的直接点:就是把测试要用的数据分离到txt记事本或者是csv文件中
①分离到txt记事本:
在jmeter的下载目录中新建data文件,用来放数据,再新建txt文件,写入数据,用英文逗号隔开:
在jmeter中选择数据文件:
选择编码;
给txt文件中的数据起变量名称,在用例中就可以直接调用变量了,变量名称也用英文的逗号隔开,和记事本中的数据一一对应起来:
在登录请求中的请求参数中使用${} 调用直接调用我们在txt中的数据,
注意:请求参数中的username和password对应的值都是带引号的,所以我们给调用的变量外面也要加上引号:
当数据为2组时,需要线程组的线程数改为2:(内部会进行依次调用两组数据)
分离到CSV:
CSV文件和excel文件一模一样,就是用excel工具写入数据后 在保存时选择csv后缀。
方式2:用户自定义变量
可以把公共的数据分离出来,专门来进行调用。所谓公共的数据指的是这些数据多次使用到。
三、jmeter里面处理动态参数怎么处理?(面试题!)
【动态参数、关联、上一个接口的输出是下一个接口的输入】处理方式:
以登录为例:
登录成功后会返回token,这个token就是动态参数,那么在jmeter中,登录的接口中添加后置处理器中的 json提取器 或者是 正则表达式提取器,把获取到的token定义一个变量,在下个接口中通过${}来调用,这样就实现了参数的上下关联。
(json提取器在上一篇随笔)
正则表达式提取器:
和json提取器效果一样,只是两种方式
*:所有
?:代表的是一个字符串
\d:代表的是数字
\D:代表的是字母
json工具:https://tool.oschina.net/regex
例:
在登录接口中,通过正则表达式提取器提取token:
第一行的token是提取的内容的变量名
第二行是响应结果中的"token":和正则表达的提取方式 ,如果响应结果的值中有引号,这里也要带上
第三行和第四行是规定格式
productID是通过正则表达式提取的内容的变量名:
.*?是一个万能的,所有都能匹配到
四、COOKIE管理器
HTTP COOKIE管理器的作用是:在所有的请求中共享SESSIONID(可以使用JSON提取器也可以使用这种方式,这种方式更简单粗暴,但是值可能会过期)
实例:
https://edu.51cto.com/center/orders/order/get-order-list
jiarq0610
在登录时抓包,获取到cookie的值,再具体根据格式的差别(比如cookie前面还要加什么),放在请求头中,注意在使用cookie管理器时,请求头中的cookie是要放具体的值,不能调用变量的:
正常情况下,我们在访问下一个接口 如个人主页(或任何依赖cookie的接口)时都需要带上cookie的值,不过 这时如果我们加上cookie管理器,不用再专门给下一个接口加cookie了,可以直接成功访问个人主页(cookie管理器的作用:在所有的请求中共享SESSIONID):
cookie管理器放在请求最前面,其中什么也不用填:
加上cookie管理器之后,我们访问个人主页时,不用再加cookie:
五、固定定时器
当接口之间的速度很快的时候,想让请求与请求之间有间隔,就使用固定定时器,,它的单位是毫秒
在登录接口中设置等待,登录后会间隔一秒访问个人主页:(时间自己设定)
数据驱动: 用户定义的变量 ;HTTP请求默认值
请求头: HTTP信息头管理器
断言: JSON断言 响应断言
动态参数: JSON提取器; 正则表达式提取器
时间: 固定定时器
参数化: CSV数据文件设置(记事本 CSV)
数据驱动: 把公共的数据分离出来,方便修改(如地址)
参数化:主要用于迭代测试,同样的步骤 测不同的数据时。
json提取器和正则表达式提取器:相当于postman中的set get,提取出响应数据中的动态参数。
cookie管理器:专门用来处理cookie,把实际的cookie值放在请求头中后,加上cookie管理器,就会自动更新和携带cookie去发送请求。