首页 > 其他分享 >jmeter之参数化

jmeter之参数化

时间:2022-12-09 20:14:50浏览次数:35  
标签:文件 请求 添加 线程 参数 jmeter 循环

一、参数化

1、指定参数值

  这种方法常用来解决线程组中多个请求共用相同的数据,比如我们所有请求都可能有相同的IP地址,当地址改变时可以一改全改。

  添加用户定义的变量,右击线程组->添加->配置元件->用户定义的变量;

  

  打开用户定义的变量,添加变量,写好名称和值

  

  脚本中用到该值的所有地方都可以引用这个变量名了,引用变量的格式为 ${变量名}

  

  另外,也可以在Test Plan(测试计划)中进行参数设置,这里设置的参数为全局变量,所有请求都可以使用这里配置的参数,如下图:

  

  使用方法和上面一样,在请求中用${ip}和${port}替代对应的值

2、借助函数生成参数

  测试过程中,有时候数据不适合被指定,可选择借助函数来生成,以下是最常用的几种:

  (1)用函数生成随机数:(__Random)

      在Jmeter中点击 选项->函数助手对话框

      

      在弹出的对话框中选__Random,填写随机数的范围,点击生成按钮,就看到你需要的字符串了

      

      尝试在请求中使用生成的随机数,把刚拷贝的字符串粘贴到请求的参数里

      

      发送请求,查看请求中参数值的情况,参数生效了

      

  (2)用函数生成当前时间:(__time)

      

      

  (3)用函数生成通用的唯一识别码:(__UUID)

      

3、文件传参

  用于读取在文件中维护的参数,如参数文件内容如下:

  

  注意,Jmeter读取文件总的参数是从第一行就开始了的,千万不要犯下面的错误:

  

  在Jmeter中右击线程组->添加->配置元件->CSV Data Set Config

  

  打开设置窗口,写入参数文件的全名(含绝对路径),变量名,Delimiter就用默认的逗号,表示在准备参数文件时参数表的列之间用逗号隔开  

  

  在请求中引用参数时应该是这样的:${username}  ${pwd},用它们来顶替对应的参数值  

  Filename:参数文件的全路径

  File encoding:文件编码,一般可以不填

  Variable Names:参数名称,可以填多个,用Delimiter中定义的分隔符隔开就可以

  Delimiter:分隔符,“/t”代表tab键,这里一般默认用逗号

  Allow quoted data:是否去掉参数文件中值所带的引号(选择True,“test”读出来就变成了test,选择False,“test”读出来还是“test”)

  Recycle on EOF:参数文件中的值是否循环取值(如果文件中有4个值,有6个线程,这里选择True的话,第5个线程循环取到第一个值,第6个线程循环取到第二个值,如果选择False的话,第5个线程和第6个线程取不到值)

  Stop thread on EOF:参数文件中的值取完是否停止运行(如果文件中有4个值,有6个线程,这里选择True的话,第4个线程运行完就停止运行,如果选择False的话,第5个线程和第6个线程还会继续运行,取值策略根据Recycle on EOF来取值)

  Sharing mode:线程共享模式,有3个选项,所有线程(All threads)、当前线程组(current threads group)、当前线程(current threads),默认选择当前线程。这里选择不同的模式,根据线程组中设置的线程数、循环次数以及循环控制器中设置的循环次数,取值的策略不一样。具体怎么不一样,需要大家亲自去操作。

4、用户参数

  用户参数与文件参数类似,一个参数可以设置多个值,需要添加一个用户参数,具体操作如下:

  右键添加->前置处理器->用户参数

  

  在用户参数中填入参数名称和参数值,可以添加多个参数,每个参数可以使用多个值

  

  取值策略:线程组和循环控制器中的循环次数设置为多次时,每次循环都取第一个值,线程组当中的线程数设置为多个时,则会循环取数

  

  

  在请求中引用参数时应该是这样的:${name}  ${passwd},用它们来顶替对应的参数值  

5、关联传参

  在线程组内,当你想用一个请求的响应结果作为另一个请求的入参时就需要用到关联

  (1)用正则表达式关联

      思路是先从某个请求的响应数据中提取你需要的值,在把这个值在另一个请求中入参,操作如下:

      在需要被提取响应数据的请求下添加正则表达式提取器,右击添加->后置处理器->正则表达式提取器

     

    在正则表达式提取器中填写 引用名称,不说也知道用途;正则表达式,最简单的办法是在响应数据中把要提取的目标值左右若干字符包含目标值的一行拷贝出来,粘贴到正则表达式框内,在把目标值用一对小括号替换,括号里用添上合适的匹配符本例如(.*); 注意在响应数据中拷贝时尽量避开需要转义的字符如果不能避开,请转义;模板通常固定填$1$;匹配数字1代表区匹配的第一个值;缺省值是在匹配失败时取得的值,通常用来检查匹配是否成功。

用${age}入参给另一个请求,查看结果传参成功 

  (2)用Json Path Extractor 插件关联

      只针对Json格式的Response 取值,右击请求添加->后置处理器->JSON Path Extractor

      

      在JSON Path Extractor中填入引用名和JSONPath Expression

      

      在另一个请求中入参,也和上面的结果一样转参成功

      

      注意,JSON Path Extractor这个插件只能在Jmeter3.x以上的版本安装

标签:文件,请求,添加,线程,参数,jmeter,循环
From: https://www.cnblogs.com/wfw001-2018/p/12679838.html

相关文章

  • jmeter之非GUI运行
    一、应用场景日常测试过程中发现,在大数量并发时,jmeterGUI界面经常宕机、卡死,在这种情况下我们就需要使用命令行来执行脚本了(非GUI模式)。二、命令行模式优点1、节约系统......
  • jmeter分布式部署
    一、为什么要进行分布式部署Jmeter对于并发量很大的需求,如上万并发量,受到CPU和内存的限制,单机模拟场景是实现不了的,为了让JMeter提供更大的负载能力,须使用它的分布式......
  • react-native 使用路由传递参数
    navigation.navigate('home',{activeFilterTab:'posted'})//传递的对象{activeFilterTab:'posted'}接收方:route.paeams.activeFilterTab就行   ......
  • JavaScript:箭头函数:作为参数进行传参
    之前已经说过,JS的函数,也是对象,而函数名是一个变量,是可以进行传参的,也即函数是可以被传参的。只要是函数,都可以被传参,但是箭头函数的语法更为灵活,所以更方便进行传参。如......
  • Layui中layer.open的常用参数
    layer.open({//基本层类型:0(信息框,默认)1(页面层)2(iframe层,也就是解析content)3(加载层)4(tips层)type:1,title:"标题",//当type:2时就是urlcontent......
  • ASEMI电磁炉整流桥KBJ2510参数和性能
    编辑-ZASEMI电磁炉整流桥KBJ2510参数和性能怎么样呢?ASEMI采用波峰的GPP大芯片,工艺制造,稳定性高,抗冲击性强。KBJ2510具体参数为:正电流:25A,反向耐压:1000V,反向电流:10uA,正向压......
  • springboot启动参数解释
    springboot启动参数解释测试配置的的参数如下:/usr/local/jdk/jdk1.8.0_261/bin/java-jar-server\ ##服务模式,linux默认是server模式,window默认是client参数......
  • 2、tekton pipline参数调用流程
    变量定义的两种类型:1、string: 字符串类型2、数组类型 ......
  • JMeter+Badboy实现简单压力测试
    JMeter+Badboy实现简单压力测试​​下载需要的工具​​​​下载Badboy步骤:​​​​下载JMeter步骤:​​​​安装Badboy后打开​​​​打开JMeter​​下载需要的工具1.下载Bad......
  • jmeter教程
    安装与配置一:下载jdk——配置jdk环境变量1.新建环境变量变量名:JAVA_HOME变量值:(即JDK的安装路径)2.编辑Path%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;3.新建环境变量变量名......