zoukankan      html  css  js  c++  java
  • 使用jmeter构造时间戳参数

    很久没用jmeter了,这次趁着项目稳定后,用jmeter写了一些创建测试数据的脚本,因为手动创建数据太麻烦了

    本次编写脚本,一方面是通过查看后台请求,手动录入脚本,另一方面用到了一些自带的函数来生成时间戳、生成随机数

    所以本篇主要说一下这次写脚本的思路以及函数助手中用到的函数

    1.整体思路

    • 要想构造数据,首先必须登录获取token,后续操作都依赖这个生成的token;
    • 本次需要构造3种类型的数据,每种数据填写的字段不同,所以编写脚本时,利用【事务控制器】,把不同作用的脚本进行分类,例如登录操作、构造A类型数据、构造B类型数据,这样脚本运行时,结果看起来一目了然;
    • 不同请求需要的headers可能不同,所以把【HTTP信息头管理器】添加在各个【事务控制器】下,只对其下的请求生效(或者再细分添加某个具体请求下);
    • 根据参数实际情况选用【HTTP请求默认值】以及【JSON提取器】、【正则表达式提取器】以及【函数助手】等,帮助实现参数化

    2.编写过程中的关键点

    (1)响应结果中的中文字符显示成了“???”

    编写好第一个脚本后,执行后查看结果,发现中文字符没有正常显示,如下

     解决方法:在请求中,加上内容编码:utf-8

     

    (2)添加时间戳 timestamp

    有些请求携带的参数中包含时间戳,可以是放在headers中,也可以是放在请求参数中

     在jmeter中,能够通过函数助手来生成时间戳

    • 生成当前时间

    依次点击【选项】-【函数助手对话框】,打开函数助手

    然后选择【__time】函数,它可以生成各种形式的当前时间,展示如下

     点击【帮助】会默认打开浏览器显示该函数的说明文档,谷歌硬核翻译如下

     (1)不填写任何格式,直接点击【生成】,在结果区会展示一个13位的时间戳(毫秒级)

     (2)如果要生成10位数字时间戳(秒级),则需要在格式字符中输入“/1000”

     

      (3)生成特定格式的日期

    帮助文档中提供了如下几种

    • YMD = yyyyMMdd
    • HMS = HHmmss
    • YMDHMS = yyyyMMdd-HHmmss

    依次来试一下

    YMD,等价于yyyyMMdd,填写到格式字符串中,点击【生成】

     HMS ,等价于 HHmmss

     YMDHMS ,等价于 yyyyMMdd-HHmmss

     也可以自己来自定义一下显示格式

     之前说生成时间戳时,变量名是非必填的,下面看下填写变量名后是什么效果

      注意:当点击【生成】后,“拷贝并粘贴函数字符串”后会出现一串变量名,这个可以理解为时间戳变量,把它放到请求参数中,就意味着获取到了当前时间,如下

    •  根据当前时间进行位移(向前or向后移动指定时长)

    有些请求会用到过去或将来的 某一个时间,jmeter有一个函数可以满足这个需求【__timeShift】

     谷歌硬核翻译帮助文档如下

     下面来试验一下

    (1)显示格式为yyyyMMdd,时间基准20200420,向后推移2天

     (2)显示格式为时间戳(毫秒级),时间基准为当前时间,向后推移10分钟

    ${__timeShift(,,PT10M,,)}

     (3)显示格式为 yyyy/MM/dd HH:mm:ss,时间基准为 2020/04/17 17:38:00,向后推迟 10分20秒

    ${__timeShift(yyyy/MM/dd HH:mm:ss,2020/04/17 17:38:00,PT10M20S,,)}

     (4)显示格式为 yyyy/MM/dd HH:mm:ss,时间基准为 2020/04/17 17:38:00,向前推 10分20秒

    有2种写法:PT-10M-20S   或  -PT10M20S

     ps.位移时间时,注意“-”添加的位置即可,“+”可以省略

    添加时间戳一方面可以用到传时间参数这种情况下,直接丢个时间戳过去;另一方面,例如批量造数据时,不想每个数据的名称都一样,那么就可以用时间戳作名称后缀,如下

     这样生成的数据就是:测试数据-20200417-141443 

    (3)生成随机数

    一种是利用【__Random】函数(生成的随机数不唯一,可能会重复)

     一种是利用【__UUID】函数(每次都会生成唯一的随机数)

    OK,本篇重点讲的内容就到这里啦,通篇看下来其实主要是时间戳函数的使用,后续再介绍其他

  • 相关阅读:
    C#projectPropertyGrid 显示结构(展开逗号分隔)
    WPF 数据绑定
    WPF Binding值转换器ValueConverter使用简介(二)-IMultiValueConverter
    WPF Binding值转换器ValueConverter使用简介(一)
    Sql语句知识大全
    C#端口、IP正则
    C#基础知识整理
    C#UDP异步通信
    D365 添加导入按钮继承到系统导出
    D365 FO 创建DataEntity找不到natural key
  • 原文地址:https://www.cnblogs.com/hanmk/p/12716883.html
Copyright © 2011-2022 走看看