jmeter(十八)接口测试
jemeter接口测试主要步骤
1、添加线程组
2、添加http请求
3、在http请求中写入接口url、路径、请求方式、参数
4、添加查看结果树
5、调用接口、查看返回值
jemeter界面展示
简单例子说接口测试
1、获取学生信息
接口文档如下:
新增HTTP请求,输入服务器及路径,方法为get,添加参数stu_name,参数值小黑,点击运行
在查看结果树中查看结果:
2、登录
接口文档如下:
新增HTTP请求,输入服务器地址及路径,方法为post,添加两个参数名及参数值,点击运行
在查看结果树中查看结果:
注意:1、查看结果树中会保留之前运行的请求结果,如图,刚才执行的获取学生信息结果仍会显示,可通过界面清除按钮清除保留内容后,再重新执行
2、点击执行时,所有启用的请求都会执行,若只想执行某些请求,则将不执行的禁用
3、添加学生信息-入参是json类型
接口文档如下:
添加HTTP请求,输入服务器地址和路径,方法为post,在body中写入参数名及参数值信息并执行
查看结果:
注意:在测试过程中,因为部分参数是必填,而部分参数非必填,则可以测试必填参数值未填写,结果如何,非必填参数未填写,结果如何
4、文件上传
接口文档如下:
新增HTTP请求,输入服务器地址和路径,方法为post,在files upload中输入文件路径和参数名,点击执行
在结果树中查看:
5、学生充值金币--cookie以及身份验证
接口文档如下:
新增HTTP请求,输入服务器地址和路径,填入两个参数名和参数值,执行
查看结果显示并未执行成功
原因:金币充值,需要在用户登录该系统的前提下才能操作,此时就要用到cookie
如图添加HTTP cookie管理器
在cookie管理器中填入以下信息
其中值得注意的是cookie值,取自之前登录接口里,用户名对应返回的sign值。设置完cookie后,再重新执行充值的请求,查看结果,充值成功
另外还要注意的一点,能够做充值操作的用户一定要有管理员权限,没有管理员权限,则也充值不成功
6、获取所有学生信息-header信息
接口文档如下:
新增HTTP请求,输入服务器地址和路径,方法为get
执行查看结果显示并未成功
原因:在获取所有学生信息时,需要知道从哪跳转来的,此时需要添加header信息。
如图添加HTTP 信息头管理器
按照接口文档输入key和value值
再次执行该请求,查看结果
jemeter参数化使用
在调用接口的时候要填写参数,参数的值如果经常变化的话,就得每次去改,很麻烦,可以把经常变得值改成可以变化的,或者提前设置好一些值,这样调用的时候不用每次都要改值
1、用户定义的变量
像不常变化的服务器地址,很多接口的都一致,则可以方面管理该地址
如图添加用户定义变量
名称自定义,值写原本的服务器地址
然后将请求里使用该地址的地方都改为如下图所示
若之后地址变化了,只需要该用户自定义变量里的地址就可以
2、函数生成器
函数助手可以按照一些规则生成一些参数,比如随机数和取当前时间。
a. _Random
在指定范围内取随机数
点击选项,点击函数助手对话框,找到_Random函数,输入范围内最小值和最大值,点击生成按钮,会生成一个随机参数,如下图
将此参数复制,可用在如注册用户,要注册多个
b. _time 取当前时间
在一些需要传时间的情况下使用,格式为:yyyy-MM-dd HH:mm:ss
同样是在函数助手对话框里,找到_time,写入时间格式,当然也可以不要时分秒,只要年月日,根据情况取舍
_time函数不写时间格式的时候,会获取时间戳,${__time(,)}
时间戳:从Unix元年到现在过了多少秒,精确到毫秒,可转换为时间
c. _UUID
取唯一ID时可用,每次会生成一个随机的UUID,都是唯一的
3、从文件中读取
分为三个步骤:1、读取文件 2、取文件内容里面的参数,给一个名字 3、使用值
需要在线程组里加一个CSV Data Set Config,用来做前两部的操作
比如要注册多个用户,可以用文本文档先写好N个用户及密码数据,导入该数据,循环执行,注册多个用户
接口文档如下:
先新建一个文本文档,写入多个用户及密码,保存文档,如图
在线程组,右键添加->配置元件-->CSV Data Set Config,写入以下信息
在线程组中输入循环次数,一般可以设置为文本中增加的用户数,这样,循环结束,文本中的用户也全部注册结束
比如我输入循环次数为4,如下图
新增一个HTTP请求,输入服务器地址和路径,填入参数名及参数值,此时的参数值就是之前在CSV Data Set Config中配置的两个参数名,以${参数名}形式
执行该请求,在结果树中查看结果,因为循环了四次,所以结果显示四次注册信息
jemeter关联
在之前的学生金币充值这个例子时,提到需要先获取登录的信息,取得登录用户名及sign值,sign值获取也可通过参数化,在其他请求时直接使用更方便。
在原本的登录请求下增加
并按如图填写
其中获取值的写法里,按照登录接口返回值
我们要取sign的值,sign是在login_info里面,所以写法就是$.login_info.sign,设置完成后,在cookie中将登录用户的sign值改成${sign},
这个sign是刚才设置的变量名
此时运行查看结果