Jmeter核心知识点之 函数

本文深入探讨了Jmeter的核心知识点——函数,包括函数的概述、如何使用函数以及常见的几种函数如CSVRead、counter、Random、time和setProperty与property的详细解析及应用场景,帮助读者掌握Jmeter函数的运用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jmeter核心知识点之函数

一、Jmeter函数的概述
1.Jmeter函数是什么?
可以被认为是特殊值,可以填充测试数据任何采集器或其他元素的字段
2.学习Jmeter可以达到的目的
1.使用函数可以批量对请求的参数操作
2.使用函数可以读取外部数据进行参数化
3.使用函数可以设置指定动态数据为全局变量
3.如何使用Jmeter函数
${__functionName(var1,var2,var3)} 

     1) ${} 函数引用固定格式和参数化相同
     2) __functionName匹配被调用的函数名称;
     3) 用圆括号包含函数的形参,例如${__time(YMD)},不同函数要求的参数也不同;
     4) 有些JMeter函数不要求参数,则可以不使用圆括号,例如${__threadNum};

函数的参数的注意事项:

(1)、Jmeter函数调用格式

如果函数参数包含逗号,请确保使用“ \” 转义,否则JMeter会将其视为参数分隔符.

例如:$ {__ time(EEE \,d MMM yyyy)}

如果逗号未被转义 - 例如$ {__ javaScript(Math.max(2,5))}

将收到如下错误:

错误 -  jmeter.functions.JavaScript:处理Javascript时出错:[Math.max(2)
    参数列表后面的org.mozilla.javascript.EvaluatorException:missing)(<cmd>#1)

(2)、函数助手对话框(不会代码可以使用函数助手)

作用:对Jmeter中自带的参数设置和生成使用

启动函数助手的方式:
1. 菜单 -> 选项 -> 函数助手对话框
2. Ctrl+Shift+F1
3. 工具栏倒数第二个记事本图标
二、常用的函数
1. __CSVRead
2. __counter
3. __Random
4. __time
5. __setProperty
6. __property
以上为我们使用Jmeter测试项目时常用的函数
2.1__CSVRead函数

作用:csvRead函数是从外部读取参数,可以从一个文件中读取多个参数(类似于CSV data set config )

举例:

通过CSVRead函数读取csv.txt内容,作为请求时接口所需参数的值使用

http://127.0.0.1:8000/api/departments/?$dep_id_list=${__CSVRead(E:\jmeterScript\参数\csv.txt,0)}
,${__CSVRead(E:\jmeterScript\参数\csv.txt,1)}

csv.txt内容
    T01,T02
    T03,T04
    T05,T06

实现分析:

1.测试计划 ->线程组
2.线程组 —>HTTP请求
3.函数助手对话框 —>__CSVRead
4.测试计划 ->监听器 ->查看结果树

参数配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MZy9jwZD-1586258823351)(file:///C:/Users/Acer/AppData/Local/Temp/Rar$EXa7668.36419/%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95%E8%AF%BE%E4%BB%B6/img/csvread_conf.png)]

1. 选择一个功能:选择__CSVRead
2. CSV file to get values from | *alias:要读取的文件路径-(绝对路径)
3. CSV文件列号| next| *alias:从第几列开始读取,注意第一列是0
4. 点击生成函数引用格式
5. 全选复制

总结:

流程与 CSV Data Set Config 类似,功能也类似,但是:

1、路径使用绝对路径,可移植性差

2、调用语法冗余(一次只能读取一个字段)

3、使用线程数控制执行次数,比较耗费资源

4、乱码处理不统一(不能使用 UTF-8,使用 ANSI)

综上: CSVRead 函数使用慎重(CSVRead 可以实现的, CSV Data Set Config 也可以)
2.2__counter函数
作用:使用__counter这个函数可以实现计数的功能

实现分析:

1. 测试计划->线程组
2. 线程组->HTTP请求
3. 函数助手对话框->__counter
4. 测试计划->监听器->察看结果树

参数配置:
在这里插入图片描述

参数解释:
- true:代表每个用户有自己的计数器,可以用于统计每个线程各执行了多少次
- flase:代表全局计数器,可以统计这次测试运行了多少次

总结:

1. __counter函数作用
2. __counter函数与指定值配合使用 num=${__counter(FALSE,)}
2.3__Random函数
作用:随机生成一个指定范围内的数

实现分析:

1. 测试计划->线程组
2. 线程组->HTTP请求
3. 函数助手对话框->__Random
4. 测试计划->监听器->察看结果树

函数配置图:

在这里插入图片描述

参数解释:
1.一个范围内的最小值:随机数生成开始数,也是最小数
2.一个范围内允许的最大值:随机生成结束数,也是最大值
2.4__time 函数
作用:获取当前电脑日期时间 比如: MMddhhmmss 月/日/时/分/秒

举例:

使用__time函数解决迭代(学院-新增)dep_id重复问题

JSON报文:
        {
            "data": [
                        {
                            "dep_id":"time${__time(MMddhhmmss,)}",
                            "dep_name":"Test学院",
                            "master_name":"Test-Master",
                            "slogan":"Here is Slogan"
                        }
                      ]
        }

实现分析:

1. 测试计划->HTTP信息头管理器
2. 测试计划->线程组
3. 线程组->HTTP请求
4. 函数助手对话框->__time函数
5. 测试计划->监听器->察看结果树

__time函数配置图:
在这里插入图片描述

Format string for SimpleDateFormat (optional):
    1) 为空:返回毫秒
    2) 设置格式:MMddhhmmss 月/日/时/分/秒

2.5 __setProperty 与__property函数
作用:
1.__setProperty作用:用于吧指定数据设定为Jmeter属性,可以理解为是把制定数据设置为全局变量
2.__property:获取Jmeter属性值

举例:

通过__setProperty函数把新增的学院ID,设置成全局变量

实现分析:

1. 测试计划-HTTP信息头管理器
2. 测试计划->JDBC Connection Configuration
3. 测试计划->线程组(学院-新增)
4. 线程组->HTTP请求(HTTP请求-学院新增)
5. 线程组->JDBC Request
6. 函数助手对话框->__setProperty函数
7. 线程组->BeanShell Sampler
8. 线程组->Debug Sampler
9. 测试计划->察看结果树
10. 工作台->Property Display

__setProperty函数配置图:
在这里插入图片描述

1.属性名称:要设置的属性名称也就是全局变量名
2.Value of property:属性的值(全局变量的值)

BeanShell Sampler 配置图

作用:可以执行js的一种容器
在这里插入图片描述

__property函数配置图

用来获取属性值
在这里插入图片描述

选项解析:
Name of variable in which to store the result (optional):获取属性的名称

总结:

set_property把第一个请求响应的数据声明为属性,beanshell sampler 把属性提升为全局的变量,第二个线程组使用property
获取声明为全局的变量值,从而达到第一个线程组的结果作为第二个线程组的参数的传递.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值