jmeter函数和变量(三)
来源:互联网 发布:淘宝店铺如何上传图片 编辑:程序博客网 时间:2024/05/17 02:15
接上篇 jmeter函数和变量 http://blog.csdn.net/yue530tomtom/article/details/77456506
__log
记录一个日志并返回输入的字符串
OUT 和ERR的日志级别,将会分别导致输出记录到System.out和System.err中。在这种情况下,输出总是会被打印(它不依赖于当前的日志设置)。
${__log(Message)}:写入日志文件,形如”… : Message”。
${__log(Message,OUT)}:写到控制台窗口。
${__log(${VAR},,,VAR=)}:写入日志文件,形如”… VAR=value”。
__logn
类似log但返回空字符串
例子见__log
__BeanShell
该函数允许用户运行一段自定义的BeanShell函数,脚本可以用来设置JMeter的属性和参数值,也可以返回数据。若想获取更多关于beanshell详细信息—请移步
需要注意,测试脚本中每一个独立出现的函数调用,都会使用不同的解释器,但是后续对函数调用的援引会使用相同的解释器。这就意味着变量会持续存在,并跨越函数调用。
单个函数实例可以从多个线程调用。另外,该函数的execute()方法是同步的。
如果定义了属性 “beanshell.function.init”,那么它会作为一个源文件传递给解释器。这样就可以定义一些通用方法和变量。在bin目录中有一个初始化文件的例子:BeanShellFunction.bshrc。
如下变量在脚本执行前就已经设置了。
- log:函数BeanShell(*)的记录器。
- ctx:目前的JMeter Context变量。
- vars:目前的JMeter变量。
- props:JMeter属性对象。
- threadName:线程名(字符串)。
- sampler:当前采样器(如果存在)。
- sampleResult:当前采样器(如果存在)。
(*)意味着该变量在JMeter使用初始化文件之前就已经设置了。其他变量在不同调用之间可能会发生变化。
例如,
${__BeanShell(123*456)}:回56088。${__BeanShell(source("function.bsh"))}:行在function.bsh中的脚本。
请记得为文本字符串及代表文本字符串的JMeter变量添加必要的引号。
__groovy
与beanshell类似,只是它执行的是apache groovy脚本,并返回结果。
如果定义了属性 “groovy.utilities”,属性将会被脚本引擎加载,这样就可以定义一些通用方法和变量。在bin目录中有一个初始化文件的例子:utility.groovy
如下变量在脚本执行前就已经设置了。
- log:函数BeanShell(*)的记录器。
- ctx:目前的JMeter Context变量。
- vars:目前的JMeter变量。
- props:JMeter属性对象。
- threadName:线程名(字符串)。
- sampler:当前采样器(如果存在)。
- prev:前一个SamplrResult(如果存在)。
- OUT:System.out
(*)意味着该变量在JMeter使用初始化文件之前就已经设置了。其他变量在不同调用之间可能会发生变化。
例如
${__groovy(123*456)}returns 56088${__groovy("${var}".substring(0\,2))}
请记得为文本字符串及代表文本字符串的JMeter变量添加必要的引号。
__split
函数__split会通过分隔符来拆分传递给它的字符串,并返回原始的字符串。如果分隔符紧挨在一起,那么函数就会以变量值的形式返回”?”。拆分出来的字符串,以变量${VAR_1}、${VAR_2}…以此类推的形式加以返回,变量的总数使用${VAR_n}。拖尾(只有分隔符即分隔符后面没有值)的分隔符会被认为缺少一个变量,会返回”?”。另外,为了更好地配合ForEach控制器,现在__split会删除第一个不用的变量(由前一次分隔符所设置)。比如
例如,在测试计划中定义变量VAR=”a||c|”:
${__split(\${VAR},VAR),|}
__XPath
函数__XPath读取XML文件,并在文件中寻找与指定XPath相匹配的地方。每调用函数一次,就会返回下一个匹配项。到达文件末尾后,会从头开始。如果没有匹配的节点,那么函数会返回空字符串,另外,还会向JMeter日志文件写一条警告信息。
整个节点列表都会被保存在内存之中。
例如:
${__XPath(/path/to/build.xml, //target/@name)}
这会找到build.xml文件中的所有target节点,并返回下一个name属性的内容。
从实验的结果来看,好像只能取属性值,对应nodes的值无法获取,返回都是null;另外标准的xpath语法也不支持比如last()://title[last()]/@lang返回的是第一个而不是最后一个~ 希望来个高手赐教、解惑
<?xml version="1.0" encoding="ISO-8859-1"?><bookstore><book> <title lang="eng">Harry Potter</title> <price>19.99</price></book><book> <title lang="cn">Learning XML</title> <price>29.95</price></book><book> <title lang="us">Harry Potter</title> <price>39.99</price></book><book> <title lang="last">Learning XML</title> <price>49.95</price></book></bookstore>
__setProperty
函数__setProperty用于设置JMeter属性的值。函数的默认返回值是空字符串,因此该函数可以被用在任何地方,只要对函数本身调用是正确的。
通过将函数可选的第3个参数设置为”true”,函数就会返回属性的原始值。
属性对于JMeter是全局的,因此可以被用来在线程和线程组之间通信。
__time
使用指定的变量格式返回当前时间
如果省略了格式字符串,函数返回从1970年到当前时间的毫秒数。其他情况下,当前时间会被转成简单日期格式。如果格式匹配 “/ddd”(ddd是十进制数),返回 从1970年的总毫秒数除以/ddd,包含如下形式:
YMD = yyyyMMdd。
HMS = HHmmss。
YMDHMS = yyyyMMdd-HHmmss。
USER1 = JMeter属性time.USER1。
USER2 = JMeter属性time.USER2。
用户可以通过修改JMeter属性来改变默认格式,例如,time.YMD=yyMMdd。
__jexl2
函数_jexl可以用于执行通用JEXL表达式,并返回执行结果。感兴趣的读者可以从下面这两个网页链接获取更多关于JEXL的信息。
- JEXL syntax description
- JEXL examples
如下变量可以通过脚本进行访问。
- log:函数记录器。
- ctx:JMeterContext对象。
- vars:JMeterVariables对象。
- props:JMeter属性对象。
- threadName:字符串包含当前线程名称 (在2.3.2 版本中它被误写为”theadName”)。
- sampler:当前的采样器对象(如果存在)。
- sampleResult:前面的采样结果对象(如果存在)。
- OUT - System.out,例如 OUT.println(“message”)。
JEXL可以基于它们来创建类,或者调用方法,例如:
Systemclass=log.class.forName("java.lang.System"); now=Systemclass.currentTimeMillis();
需要注意的是,Web站点上的JEXL文档错误地建议使用”div”做整数除法。事实上”div”和”/”都执行普通除法。
i= 5 / 2;i.intValue(); // or use i.longValue()
JMeter 允许在表达式中包含复杂的语句。
__jexl3
详见 __jexl2
Jmeter函数和变量(一) http://blog.csdn.net/yue530tomtom/article/details/76651040
Jmeter函数和变量(二) http://blog.csdn.net/yue530tomtom/article/details/77456506
Jmeter函数和变量(三) http://blog.csdn.net/yue530tomtom/article/details/77533426
Jmeter函数和变量(四) http://blog.csdn.net/yue530tomtom/article/details/77573247
- jmeter函数和变量(三)
- jmeter函数和变量(一)
- jmeter函数和变量(二)
- jmeter函数和变量(四)
- 详解JMeter函数和变量(转载)
- (三)jmeter 用户自定义变量和http默认请求
- JMeter学习(三十二)属性和变量
- Jmeter属性和变量
- Jmeter属性和变量
- Jmeter属性和变量
- Jmeter属性和变量
- Jmeter属性和变量
- JMeter学习笔记19-函数和变量的使用
- jmeter(三)maven 和jenkins
- Jmeter变量参数化及函数应用
- Jmeter变量参数化及函数应用
- Jmeter变量参数化及函数应用
- (Jmeter 三)JMETER+WEBSERVICE性能测试
- 将html里面的img标签拼上全路径
- 使用JDBC获取与mysql的连接
- netty初步学习
- Git学习
- iptables理解与实际配置
- jmeter函数和变量(三)
- java基础十九天 线程同步
- js调用摄像头
- JS实现继承的几种方式
- Java实现发邮件功能
- 非常强大的在线开发平台加工具和资源
- TP5.0 动态注册路由报模块未存在错误
- Jenkins内存溢出异常
- I Hate It(树状数组--区间求最大值)