我爱编程

02_Jmeter加强之参数化

2018-05-23  本文已影响0人  王康健_0124

简单的举例就是:1+1=2,但是现在我把其中的一个“1”替换一个的字符“A”,这个A我们给赋值A=1,那么1+A=2成立,继续延伸一下,A是不是也可以等于3、4、5...,给A替换不同的值,结果也不一样,把其中的一个1替换成A 这个就叫做参数化

参数化是自动化测试脚本的一种常用技巧。简单来说,参数化的一般用法就是"将脚本中的某些“输入”,改为使用参数来代替",在脚本运行时指定参数的取值范围和规则;
这样,脚本在运行时就可以根据需要选取不同的参数值作为输入。这种方式通常被称为数据驱动测试,参数的取值范围被称为数据池!

首先我们在本地E盘中创建一个CSV文件,在CSV文件中输入数据。


:变量之间用英文逗号分隔,结尾处也不能有空格

  • 一个接口返回值多个,每个结果都对后续的业务流程或调用的接口有影响,这个时候jmeter就需要一个(if控制器)来进行对返回值做判断.
  1. 首先需要在提取响应值的case下添加一个“后置处理器>正则表达式提取器”
  2. 对需要判断的结果做提取,格式xxx(.*?)xx提取出需要的字段
  3. 在if控制器中引用“正则表达式提取器”中声明的变量,并且==预期的结果
  4. 如果响应结果和预期结果相等,则执行“if控制器”下的case,不相等则跳过“if控制器”下的case,继续往下执行

首先创建一个if控制器,然后在要判断返回结果的接口上,添加一个后置处理器>正则表达式提取器



在正则表达式提取器中,上面的选择可以不用做修改:
① 直接设置一个提取值存放的“变量” 命名result
② 对接口的响应报文中定位,并提取出需要的数据(.*?)这里先用一个统一的正则表达式,后续单独写一篇“正则表达式”的使用
③ 模块和匹配数字可以先不管,因为我们只提取一串字符
④ 试运行一下,看有没有提取成功

上面介绍了一个CSV的链接方法,但是如果我需要参数化的数据都在数据库中怎么办???难道我复制出来然后放到CSV文件中,然后去读取、使用?这里可以使用到JDBC Request,把要测试的数据查询出来!
① 我们需要下载一个jdbc.jar包,不同的数据库用的jar不同,需要自行百度下载
② 把jdbc存放到apache-jmeter-3.0\lib文件下,然后右键测试计划,找到这个jar包!


③ 添加一个 JDBC Connection Configuration,然后配置:

一下是:sqlserver 配置连数据库

  1. Variable Name:随便起个名称,后面的JDBC Request要用到,才能读取JDBC Connection Configuration里的配置
  2. Database URL:jdbc:sqlserver://IP:默认端口;databaseName=实例名
  3. JDBC Driver class: com.microsoft.sqlserver.jdbc.SQLServerDriver写死的,每个数据库有不同的jdbc driver
  4. Username: 数据库账号
  5. Password : 数据库密码

启动的时候是0,每次增加1,并设置了一个变量ID


6. 后置处理器_JSON Extractor (提取json响应结果)


如果要提取王康健:那么就是:$.countactName

{
  "matchId":200,
  "subMatchId":${subMatchId},
  "contactName":"王康健",
  "contactPhone":"${randomPhoneNum}",
  "country":"上海市",
  "school":"新东方烹饪学校",
  "extraInfo":{
      "email":"wangkangjian@126.com",
      "schoolEn":"xxxxxxxxxx",
      "detailAddress":"闵行区马桥镇",
      "postCode":"111111"
  },
  "subMatchName":"${subMatchName}"
}
上一篇 下一篇

猜你喜欢

热点阅读