jmeter 脚本增强(参数化)

来源:互联网 发布:淘宝twizzlers扭扭糖 编辑:程序博客网 时间:2024/05/01 03:12
jmeter 之中通常场景需求需要很多不同的数据作为请求的一部分参数,所以需要将这些不同的数据做为参数使用变量传递给每次请求

脚本的参数化主要有以下几种方式

1. 使用配置元件CSV Data Set Config
配置解析:
  • Filename: 读取的文件,文件里有自己准备为可变参数的赋值数据,多参数可使用多列,文件后缀也不限制,可以写相对路径也可以写绝对路径。
  • File encoding: 读取文件时的编码类型,默认是UTF-8,所以如果你的文件不是这个编码方式,那就需要与自己的文件编码方式一致
  • Variable Names(comma-delimited):参数变量名称,参数文件里有几列这里就有几个变量,并且顺序与参数文件里的每一列相对应,是以逗号分隔(半角),变量名是自定义的,但是定义一个比较有意义的变量名会使脚本具有更好的可读性。
  • Delimiter(use '\t' for tab): 文件中每一列的分隔符,默认是逗号 (半角),但是注意这里是配置参数文件里的分隔符,而不是定义变量名的分隔符,变量名的分隔符只能是逗号。
  • Allow quoted data?:  此字段表示是否允许参数文件中的参数值已经被引用,比如参数文件中的值在双引号里,那么这里需要设置True才能正常读取参数文件中的值,这里默认是False,比如下图的参数文件中的第一列均有双引号,那么这里就需要设置为True才能正常读取

  • Recyle on EOF:设置参数文件读到末尾的时候是否从头再读,默认是True
  • Stop thread on EOF:线程读取文件到末尾是是否停止,默认False,如果这里设为True, Recyle on EOF 这个设置也是True时,则脚本运行线程数会以线程数和参数文件的行数中数值最小的为准
  • Sharing mode:这个配置元件共享给哪些线程,All threads测试计划中所有线程,假如说有3个线程,则每个线程读取分别对应参数文件里的行;Current thread group:当前线程组,假设有线程组A、线程组BA组内有线程A1到线程A3,线程组B内有线程B1到线程B3。取值情况是:线程A1取到了第1行,线程A2取第2行,现在B1取第1行,线程B2取第2行等等;Current thread:当前线程,假设测试计划内有线程1到线程3,则每个线程都取参数文件的第一行。
  • 注:对于 Allow quoted data 和 Sharing mode中的edit选项目前还没搞明白
配置完成后就可以在脚本中使用定义好的变量,使用方法是${变量名},如下:
在请求中使用
在响应断言中使用
2. 使用jmeter自带函数获取参数值
jmeter中可以获取参数值的有__Random( , , )__threadNum__CSVRead( , )__StringFromFile( , , , )四个函数
  • __Random(,,):使用函数助手对话框,打开此函数设置如图,最后一个字段是选填的,定义随机取到的值存储的变量名,比如请求的时候使用了随机函数,然后响应断言的时候需要用到此随机值,即可使用自定义的变量,${Rvalue},将生成的字符串拷贝到用到的地方,可以看到此函数的使用形式为$__Random(param1,param2,param3),前两参数是随机数的开始和结束值,最后一个参数是此函数随机生成的值所保存的变量,熟悉了构成就可以直接手动去写了,不用再使用函数助手对话框

请求中使用
响应断言中使用随机函数生成的值

  • __threadNum:这个函数使用时没有任何参数,只是生成当前线程的线程编号,使用方法${__threadNum},如响应断言中加入这个函数,在断言结果中查看到如图

  • __CSVRead(,):通过列读取文件,打开函数助手对话框,第一行是要读取的参数文件路径,注意这里必须是绝对路径,第二行是要读取的文件列,从第0列开始,即视觉可见的文件的第一列,0即文件中第一列,所以要读取文件中的第二列是需要设置为1
请求中使用此函数
  • __StringFromFile( , , , ):从文件读取内容,打开函数助手对话框如图,有四个参数,第一个是参数文件路径,注意也是绝对路径;第二个参数是此函数读取的值所保存的变量,可以用在后续脚本里比如${Svalue};第三个和第四个参数分别是文件开始和结束的序列号(用在从多个文件读取参数值的时候),只有第一个参数是必填,其他根据情况选填。
                读取多个文件的用法为${__StringFromFile(D:\performancetest\jmeter\script\user#.dat,Svalue,1,3)} ,其中文件路径参数中的#号代表后面两个参数从1到3的取值,所以读取的文件就是user1.dat、user2.dat、user3.dat,读取规则为按照次序先读完第一个文件的所有行,如果已经满足线程需要,则之后的文件就不会读取,如果第一个文件的行数不能满足线程需要,则读取第二个文件,以此类推;如果所有文件的行数都不能满足线程需要,那么脚本会继续运行,但是很多线程都没有取到值,不会循环读取。
                多次循环读取一个文件时${__StringFromFile(D:\performancetest\jmeter\script\user.dat,Svalue,,)} ,后面两个参数都为空就可以。
                指定循环次数读取一个文件时,${__StringFromFile(D:\performancetest\jmeter\script\user.dat,Svalue,,2)},通过最后一个参数进行设置就行,设置为2就是参数文件所有行被读取完毕后 依然没能满足线程需要会继续从文件第一行再次循环读取。
                此函数没有提供按列读取的参数,所以使用这个函数的时候的参数文件只能读取一列
在请求中使用:
在响应断言中使用函数读取的值所保存的变量Svalue:
3. 从数据库中取值作为参数化
在测试计划中加入数据库配置及请求,在请求下添加后置处理器-->正则表达式提取器,jdbc请求
正则表达式提取器的设置:引用名称即为后续需要用到变量名,正则表达式必须包含在()里,我这里用户都是字母和数字的组合,所以使用([0-9a-z]+),可以根据自己的实际情况进行,缺省值是如果没有匹配到任何内容就使用缺省值作为username的值
登陆请求中使用在数据库中查询到的用户名进行登陆
响应断言中使用数据库中查询到的用户名作为登陆成功后的验证点
0
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手表里指针掉了怎么办 北京居住证过期半年了怎么办 居住证明居委会不盖章怎么办 小孩感冒鼻子不通气怎么办 1岁宝宝喉咙痰多怎么办 两个月喉咙有痰怎么办 10个月咳嗽有痰怎么办 昆山初级会计审核没有居住证怎么办 初级会计审核没有居住证怎么办 哈尔滨原房主户口不牵走怎么办 在亲戚家住怎么办居住证 按揭车押金不退怎么办 护照到期韩国签证没到期怎么办 日本签证银行流水不够怎么办 想去日本cm签证怎么办 护照在签让那里怎么办 泰国出境单丢了怎么办 居住证到期了忘记续签了怎么办 贵州交警app忘记密码怎么办 科一第一次没过怎么办 社保转移时学历信息不符怎么办 天津摇号密码忘了怎么办 摇号账号密码忘了怎么办 京牌车去外地没有保险标怎么办 车子被扣12分怎么办 不在北京工作了社保怎么办 5年身份证到期了怎么办 c1驾照剩1分怎么办 c1驾校扣12分怎么办 我驾照扣了12分怎么办 小米手环绑定不了怎么办 小区总有小年青骑摩托车扰民怎么办 摩托车行驶证副本丢了怎么办 摩托车驾照副本丢了怎么办 公司行驶证掉了怎么办 身份证外迁了过户的话怎么办 驾照体检报告丢了怎么办 常州医保卡丢了怎么办 驾驶证违章罚单丢了怎么办 身份证被别人办了信用卡怎么办 被别人办了信用卡怎么办