Jmeter脚本参数化和正则匹配

这篇具有很好参考价值的文章主要介绍了Jmeter脚本参数化和正则匹配。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、参数化

1.用户定义的变量

2.CSV数据文件设置

3.用户参数

二、正则提取

1.JSON提取器

2.正则表达式提取器


我们在做接口测试过程中,往往会遇到以下几种情况

  • 每次发送请求,都需要更改参数值为未使用的参数值,比如手机号注册、动态时间等
  • 上一个接口的请求体参数用于下一个接口的请求体参数
  • 上一个接口的响应体参数用于下一个接口的请求体参数,比如:sessionId、token
  • 上一个接口的响应体参数用于下一个接口的url接口地址中
  • 上一个接口的响应头参数用于下一个接口的请求体参数,比如:token
  • ......

  针对以上种种情况,我们都可以通过参数化和正则提取的方式来解决

一、参数化

  举例演示,提供一个注册和登录的接口,请求体需要手机号和密码进行注册登录,并且注册过的账号再次注册会提示已注册,因为不管是未注册还是已注册的手机号去注册接口都会调用成功,所以我会在注册接口上添加一个断言

注册接口:

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

 登录接口:

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

 断言:

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

 

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

我们再次注册时,就会断言失败

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

1.用户定义的变量

  上面的示例看到,每次去调用接口都要手动修改手机号码,并且注册和登录接口都要同步修改,这样操作相当繁琐,针对这个问题我们使用用户定义的变量的工具进行优化

  在线程组上:右键—>添加—>配置元件—>用户定义的变量

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

   我们把注册和登录的手机号和密码都提取出来放到这里

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

   定义了之后,我们需要调用该参数,调用方式是在对应的取样器里,使用${key}的格式替换取样器请求体里的值,这样我们就可以每次只修改一次就可以在所有的接口上通用了

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

  虽然在此基础上已经得到了相应的优化,我们能不能做到每次运行的时候都不用去修改用户定义的变量里面的值呢?答案是可以的,这时候我们要使用到函数助手,构造相应的随机函数

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

   对于函数的各种用法,这里不做说明,可以通过函数助手的帮助去查看各个函数的使用方法

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

  我们通过函数助手来构造一个生成随机手机号的方法来替换用户定义的变量的值

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

2.CSV数据文件设置

  该方法也是参数化的一种场景,我们可以提前使用csv文件或者其它文本文件(txt、log、xml、json...)构造大量数据,然后再读取文件里面的内容引用到对应的接口当中去,这里要注意的是在国内csv我们使用excel编辑器保存后遇到中文会出现乱码的情况,因此需要进行转码后才能正常使用!

  在线程组上:右键—>添加—>配置元件—>CSV 数据文件设置

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

   我们先构造测试数据

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

   然后配置CSV数据文件设置:

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

   此时我们可以直接替换接口参数的值为该变量名称,但是不可以替换用户定义的变量的值,会引用不到

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

  执行结果如下:

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

  我们如果设置并发量为5,则会依次读取每一行数据

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

 

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

3.用户参数

  在用户定义的变量中使用随机生成手机号的方式执行,它的执行原理是在整个线程组执行会话之前创建一次后,执行过程中的所有线程都会去使用这个值,并不是每个线程组使用时都会随机生成不一样的值,所以在并发测试中,遇到这种情况就不行了,因此我们可以用户参数的工具来使得每个线程组调用的时候都能随机生成一个随机数

  在线程组上:右键—>添加—>前置处理器—>用户参数

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

   我们可以将上面用户定义的变量中由函数助手生成的函数拿到用即可

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

   我们将接口参数化替换

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

  设置并发为10,查看结果:

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

 

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

二、正则提取

  上面我们处理的是随机数,这里我们则要通过一些方法将下个接口要使用的参数用上个接口的请求体、响应头或者响应体中提取出来,以此来处理接口依赖的问题,因为暂时没有好的实例,这里只讲使用方法

1.JSON提取器

  在指定的接口取样器上:右键—添加—后置处理器—JSON提取器

  

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

  我们在查看结果树里面将JSON Path Tester调出来,可以进行编写表达式进行测试验证表达式是否正确,注意该提取器只适用于接口的json响应体

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

   JSON提取器的表达式语法格式为:$.key的格式

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

  如果响应体遇到嵌套列表的形式,如:

{"domain": 
    [
     {"id": "sdfhhsdfafvgg"}, 
     {"name": "Tom"}
    ]
}

  如果要提取name的值,表达式为:$.domain[1].name

{
    "tenant": "admin",
    "domain": [
         {"id": "sdfhhsdfafvgg", "name": "Tom"},
         {"id": "234gdgdh45h", "name": "Jerry"}
         ]
    }    

如果要提取所有name的值,表达式为:$..name  返回结果为一个列表

我们将正确的表达式填入到JSON提取器的配置当中,后面的接口就可以通过${变量名称}的方式调用该参数

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

2.正则表达式提取器

  在指定的接口取样器上:右键—添加—后置处理器—正则表达式提取器

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

  正则表达式的格式:左边界(.*?)右边界  以code为例:

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

  我们执行一次查看提取结果:

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具

Jmeter脚本参数化和正则匹配,jmeter,jmeter,python,开发语言,接口测试,自动化测试,测试工具文章来源地址https://www.toymoban.com/news/detail-566991.html

到了这里,关于Jmeter脚本参数化和正则匹配的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jmeter —— jmeter参数化实现

    在实际的测试工作中,我们经常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件的功能。这种测试方式在业界称为数据驱动测试, 而在实际测试工作中,测试工具中实现不同数据输入的过程称为参数化设置。 1、使用 用户定义的变量元件 实现 2、使

    2024年02月07日
    浏览(35)
  • 2种方法,jmeter用一个正则提取器提取多个值!

    jmeter中,用json提取器,一次提取多个值,这个很多人都会。但是,用正则提取器一次提取多个,是否可以呢? 肯定,很多人都自信满满的说,可以!形如:token\\\":“(.?)“,“identity”:”(.?)” 写一个这样的正则表达式,不就是可以提取两个了吗! 是的,这种做法没有错,但是

    2024年02月07日
    浏览(29)
  • 【2种方法,jmeter用一个正则提取器提取多个值!】

    jmeter中,用json提取器,一次提取多个值,这个很多人都会。但是,用正则提取器一次提取多个,是否可以呢? 肯定,很多人都自信满满的说,可以!形如:token\\\":\\\"(.*?)\\\",\\\"identity\\\":\\\"(.*?)\\\" 写一个这样的正则表达式,不就是可以提取两个了吗! 是的,这种做法没有错,但是,你发

    2024年02月14日
    浏览(24)
  • JMeter从入门到精通--开始你的第一个JMeter脚本

    JMeter是一款在国外非常流行和受欢迎的开源性能测试工具,像LoadRunner 一样,它也提供了一个利用本地Proxy Server(代理服务器)来录制生成测试脚本的功能,但是这个功能并不好用。所以在本文中介绍一个更为常用的方法——使用Badboy录制生成 JMeter 脚本。 简单的介绍一下

    2024年02月09日
    浏览(316)
  • JMeter 测试脚本编写技巧

     是一款开源软件,用于进行负载测试、性能测试及功能测试。测试人员可以使用 JMeter 编写测试脚本,模拟多种不同的负载情况,从而评估系统的性能和稳定性。以下是编写 JMeter 测试脚本的步骤。 第 1 步:创建测试计划 在JMeter中,测试计划是测试的最高级别,它包含了各

    2024年02月07日
    浏览(31)
  • Jmeter —— 自动录制脚本

    修改端口 修改Target Cintroller(目标控制器) 修改Grouping(分组) 编辑录制中的包含和排除 在“URL Patterns to include包含模式”中填入.*(123456).*用以过滤请求地址中不包含 1 23456的请求 在“URL Patterns to exclude排除模式”中填入(?i).*.(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2)用以过滤js、图片、

    2024年04月10日
    浏览(31)
  • jmeter命令执行脚本

    小结:         并发数怎么来的?         并发的TPS=总请求数/总时间 二八原则:并发的TPS=总请求数*0.8/总时间*0.2 稳定性测试的并发数:=有效总请求数*0.8/有效总时间*0.2 压力测试的并发数:峰值请求数/峰值时间*系数

    2024年01月25日
    浏览(34)
  • Jmeter录制HTTPS脚本

    Jmeter录制HTTPS脚本 保持端口一致 点击一下启动让jmeter自动生成证书,放在bin目录下: 打开jmeter的SSL管理器选择刚刚生成的证书: 将该证书导入到浏览器的信任证书中 随后便能录制了 如果还是无法录制,再尝试其他的 本地安装证书mmc等等

    2024年02月14日
    浏览(26)
  • Jmeter —— 录制脚本

      测试计划--》添加--》线程--》线程组(顺便讲一下线程组执行顺序:setUp --线程组 --tearDown)             最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,

    2024年03月09日
    浏览(30)
  • Jmeter脚本优化——随机函数

    线程组下有 2 个请求的参数中均使用到相同的参数,在进行参数化时,想 要每个请求使用不同的取值。 ( 1 ) 线程组设置如下 ( 2 ) 线程组下添加加购物车请求,请求传参包含商品 id ( goods_id ),见下图红色画线 内容 线程组下添加查看商品请求,请求传参包含商品 id

    2024年03月27日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包