${__BeanShell(${SCRIPT})}

时间:2023-03-10 06:08:38
${__BeanShell(${SCRIPT})}

通过将变量名称括在' $ { '和' } '中来引用测试元素中的变量。

函数以相同的方式引用,但按照惯例,函数名称以“ __ ” 开头,以避免与用户值名称冲突*。有些函数使用参数来配置它们,这些函数用括号括起来,用逗号分隔。如果函数不带参数,则可以省略括号。

应根据需要转义本身包含逗号的参数值。如果您需要在参数值中包含逗号,请将其转义为:' \, '。 这适用于脚本函数 - Javascript,Beanshell,Jexl,groovy - 其中有必要转义脚本方法调用中可能需要的任何逗号 - 例如

${__BeanShell(vars.put("name"\,"value"))}

或者,您可以将脚本定义为变量,例如在测试计划上:

SCRIPT          vars.put("name","value")
 

然后可以按如下方式引用该脚本:

${__BeanShell(${SCRIPT})}

不需要在SCRIPT变量中转义逗号,因为在将变量替换为其值之前解析函数调用。这与JSR223或BeanShell Samplers一起使用效果很好,因为它们可用于测试Javascript,Jexl和BeanShell脚本。

功能可以参考变量和其它功能,例如 $ {__的XPath($ {__ P(xpath.file),$ {XPATH})} 将使用属性“ xpath.file ”作为文件名和变量的内容XPATH如要搜索的表达式。

JMeter提供了一个工具来帮助您构建各种内置函数的函数调用,然后可以复制粘贴。它不会自动为您转义值,因为函数可以是其他函数的参数,您应该只转义您想要的值作为文字。

如果字符串包含反斜杠(' \ ')并且还包含函数或变量引用,则如果反斜杠出现在' $ '或' , '或' \ ' 之前,则将删除反斜杠。此行为是允许包含逗号或字符串$ {的嵌套函数所必需的。如果字符串不包含函数或变量引用,则不会删除“ $ ”或“ , ”或“ \ ” 之前的反斜杠。

可以使用__logn()函数报告变量或函数的值。所述__logn()函数的参考可以在任何地方在测试计划的变量已被定义后使用。或者,Java Request采样器可用于创建包含变量引用的示例; 输出将显示在相应的Listener中。请注意,有一个Debug Sampler 可用于在Tree View Listener中显示变量等的值。

__intSum

intSum函数可用于计算两个或更多整数值的总和。

引用名称是可选的,但它不能是有效的整数。

参数

属性
描述
需要
第一个论点
第一个int值。
第二个论点
第二个int值。
第n个论点
第n  int值。
没有
最后的论点
用于重用此函数计算的值的引用名称。如果指定,则引用名称必须至少包含一个非数字字符,否则将被视为要添加的另一个int值。
没有

例子:

$ {__ intSum(2,5-,MYVAR)}

将返回7(2 + 5)并将结果存储在MYVAR变量中。所以$ {MYVAR}将等于7。

$ {__ intSum(2,5,7)}

将返回14(2 + 5 + 7)并将结果存储在MYVAR变量中。

$ {__ intSum(1,2,5,$ {} MYVAR)}

如果MYVAR值等于8,1 + 2 + 5 + $ {MYVAR},则返回16

__longSum

longSum函数可用于计算两个或多个long值的总和,只要您知道值不在-2147483648到2147483647之间,就可以使用它来代替__intSum。

参数

属性
描述
需要
第一个论点
第一个长值。
第二个论点
第二个长值。
第n个论点
第n 值。
没有
最后的论点
用于重用此函数计算的值的引用名称。如果指定,引用名称必须至少包含一个非数字字符,否则将被视为另一个要添加的long值。
没有

例子:

$ {__ longSum(2,5-,MYVAR)}

将返回7(2 + 5)并将结果存储在MYVAR变量中。所以$ {MYVAR}将等于7。

$ {__ longSum(2,5,7)}

将返回14(2 + 5 + 7)并将结果存储在MYVAR变量中。

$ {__ longSum(1,2,5,$ {} MYVAR)}

如果MYVAR值等于8,1 + 2 + 5 + $ {MYVAR},则返回16

__StringFromFile

StringFromFile函数可用于从文本文件中读取字符串。这对于运行需要大量可变数据的测试很有用。例如,在测试银行应用程序时,可能需要100或1000个不同的帐号。

另请参阅 CSV数据集配置测试元素 ,该元素可能更易于使用。但是,它目前不支持多个输入文件。

每次调用它都会从文件中读取下一行。所有线程共享同一个实例,因此不同的线程将获得不同的行。到达文件末尾时,它将从头开始重新读取,除非已达到最大循环次数。如果测试脚本中有多个对该函数的引用,则每个引用都将独立打开该文件,即使文件名相同也是如此。[如果要在其他地方再次使用该值,请为每个函数调用使用不同的变量名称。]

函数实例在线程之间共享,并且文件由任何需要下一行输入的线程(重新)打开,因此使用threadNumber作为文件名的一部分将导致不可预测的行为。

如果打开或读取文件时发生错误,则该函数返回字符串“ ** ERR ** ”

参数

属性
描述
需要
文件名
文件名的路径。(路径可以相对于JMeter启动目录)如果使用可选序列号,则路径名应适合传递给DecimalFormat。请参阅下面的示例。
变量名
引用名称 - refName - 用于重用此函数创建的值。存储的值的格式为$ {refName}。默认为“StringFromFile_ ”。
没有
开始序列号
初始序列号(如果省略,则将结束序列号视为循环计数)
没有
结束序列号
最终序列号(如果省略,序列号可以无限制地增加)
没有

打开或重新打开文件时,将解析文件名参数。

每次执行该函数时,都会解析引用名称参数(如果提供)。

使用序列号:

使用可选序列号时,路径名称将用作java.text.DecimalFormat的格式字符串。当前序列号作为唯一参数传入。如果未指定可选的起始编号,则按原样使用路径名。有用的格式序列是:

插入数字,不带前导零或空格
000
如有必要,将打包的数字插入三位数,前导零
格式字符串的用法

这里有一些格式字符串以及它们将生成的相应序列。

针# '' DAT
将生成不带前导零的数字,并将字面处理为像
pin1.dat,...,pin9.dat,pin10.dat,...,pin9999.dat
pin000' 。'DAT
在保持点的同时会产生前导零。当数字开始具有更多数字然后这个格式建议的那三个数字时,序列将使用更多数字,如
pin001.dat,... pin099.dat,...,pin999.dat,...,pin9999.dat中所示。
针。'DAT#
在保持点并生成
pin.dat1,...,pin.dat9,...,pin.dat999的同时附加没有前导零的数字

如果需要的数字多于格式化字符,则会根据需要扩展该数字。
要防止解释格式化字符,请将其括在单引号中。请注意,“ 。 ”是一个格式化字符,必须用单引号括起来(虽然#。和000.在小数点也是“ 。 ”的区域设置中按预期工作。) 
在其他语言环境(例如fr)中,小数点是“ , ” - 这意味着“ #。 ”变成“ nnn ”。
有关完整详细信息,请参阅DecimalFormat的文档。
如果路径名称不包含任何特殊格式字符,则当前序列号将附加到名称,否则将根据格式化说明插入数字。
如果省略了起始序列号,并且指定了结束序列号,则序列号被解释为循环计数,并且该文件将在最多“ 结束”时间使用。在这种情况下,文件名未格式化。 
$ {__ StringFromFile(PIN#'。'DAT ,, 1,2)} - 读取PIN1.DAT,PIN2.DAT 
$ {__ StringFromFile(PIN.DAT ,,, 2)} - 读取PIN.DAT两次
注意“ 。 “在PIN.DAT上面应该不被引用。在这种情况下,省略起始编号,因此文件名完全按原样使用。

随机推荐

  1. C程序之包含头文件

    在C程序中包含文件有以下两种方法: 方法一:#include<XXX.h> 这里的XXX一般是改动较小的标准库,用符号"<"和">"将要 ...

  2. 在linux下设置定时任务

    输入命令 crontab -l(列出当前有哪些定时任务)crontab -e(修改这些任务)然后编辑:添加定时任务(编辑命令是vi编辑器的,tips:i,insert;:wq,保存并退出)格式:* * ...

  3. [Training Video - 3] [Groovy in Detail] Non-static and Static variables, objects and object referances

    log.info "starting" // we use class to create objects of a class Planet p1 = new Planet() ...

  4. 白盒测试实践项目(day6)

    胡俊辉负责JUint测试部分,了解JUint测试的方法,并对其他成员介绍JUint的使用,负责JUnit部分相关文档的编写,负责博客园博客的维护,负责小组成员的任务分类与管理. 李建文负责代码复审部分 ...

  5. HDU 6005 Pandaland (Dijkstra)

    题意:给定一个图,找出一个最小环. 析:暴力枚举每一条,然后把边设置为最大值,以后就不用改回来了,然后跑一遍最短路,跑 n 次就好. 代码如下: #pragma comment(linker, &qu ...

  6. .NET基础 (01).NET基础概念

    .NET基础概念 1 什么是CTS.CLS和CLR2 开发和运行.NET程序需要的最基本环节是什么3 .NET是否支持多编程语言开发4 CLR技术和COM技术的比较5 什么是程序集和应用程序域 1 什 ...

  7. HBASE的优化、hadoop通用优化,Linux优化,zookeeper优化,基础优化

    HBase 的优化3.1.高可用在 HBase 中 Hmaster 负责监控 RegionServer 的生命周期,均衡 RegionServer 的负载,如果Hmaster 挂掉了,那么整个 HBa ...

  8. 试题 A: 组队 蓝桥杯

    试题 A: 组队本题总分: 5 分[问题描述]作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容.每位球员担任 1 号位至 5 号位时的评分如下表所示.请你计算 ...

  9. NYTimes Objective-C 编程风格指南

    转自eseedo的博客   [微博] NYTimes Objective-C 编程风格指南.来源:https://github.com/NYTimes/objective-c-style-guide ...

  10. Android-ActivityManager 退出整个应用

    在做Android APP 过程中,有退出整个Project的功能,以下就是接受退出整个应用的操作: ActivityManager是用来管理记录每一个Activity,最后统一用来退出结束: pub ...