打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
jmeter函数和变量(二)

接上篇 jmeter函数和变量 http://blog.csdn.net/yue530tomtom/article/details/76651040

__javaScript

函数__javaScript可以用来执行JavaScript代码片段(非Java),并返回结果值。JMeter的__javaScript函数会调用标准的javascript解释器。JavaScript会作为脚本语言使用,因此可以做相应的计算。
在脚本中可以访问如下一些变量。

  • Log:该函数的日志记录器。

  • Ctx:JmeterContext对象。

  • Vars:JmeterVariables对象。

  • threadName:字符串包含当前线程名称 。

  • sampler:当前采样器对象(如果存在)。

  • sampleResult:前面的采样结果对象(如果存在)。

  • props:JMeter属性对象。

Rhinoscript允许通过它的包对象来访问静态方法。例如,用户可以使用如下方法访问JMeterContextService静态方法:
Packages.org.apache.jmeter.threads.JMeterContextService.getTotalThreads()

JMeter不是一款浏览器,它不会执行从页面下载的JavaScript。

AttributeDescriptionRequired
表达式函数执行的JavaScript表达式例如:new Date()
变量引用名,保存函数返回值,以便复用

请记得为文本字符串添加必要的引号。另外,如果表达式中有逗号,请确保对其转义。例如,${__javaScript(‘${sp}’.slice(7,99999))},对7之后的逗号进行了转义。

${__javaScript(new Date())}:返回一个日期
${__javaScript(new Date(),MYDATE)}:返回当前日期并存储在变量MYDATE中
${__javaScript(Math.floor(Math.random()*(${maxRandom}+1)),MYRESULT)}:使用变量maxRandom,返回0-maxRandom之间的一个随机数并存储在MYRESULT中
${__javaScript(${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)),MYRESULT)}:使用maxRandom和minRandom变量,返回一个minRandom~maxRandom之间的一个随机数并存储在MYRESULT中
${__javaScript(“${VAR}”==”abcd”,MYRESULT)}:比较VAR变量值是否等于”abcd”的值,返回boolean值并存储在MYRESULT中

__Random

函数__Random会返回指定最大值和最小值之间的随机数

AttributeDescriptionRequired
最小值数值
最大值一个比第一个大的数值
变量引用名,保存函数返回值,以便复用


__RandomString

返回一个固定长度的随机字符串,在缺省第二个参数时,即使指定了jmeter的字符编码也可能会出现乱码。

AttributeDescriptionRequired
Length将要创建的随机字符串的长度
使用字符创建随机字符串使用的字符集
变量引用名,保存函数值,壁边复用


__RandomFromMultipleVars

函数返回基于指定的变量产生的随机值
变量可以是简单的变量也可以是表达式形式的复杂变量例如

  • Regular Expression Extractor

  • CSS/JQuery Extractor

  • JSON Extractor

  • XPath Assertion

多值变量是从表达式提取出来的,这样会创建一个匹配总数的变量”varName_matchNr” 并且会为每个变量创建varName_n,其中n=1,2,3……等

AttributeDescriptionRequired
变量列表使用|分割的变量名列表
变量引用名,保存函数值,壁边复用


__UUID

用来生成一个附机字符串,格式类似8e9464d2-4561-453e-8005-ad0a44507640

__CSVRead

函数__CSVRead会从CSV文件读取一个字符串(请注意与StringFromFile 的区别)。
JMeter3.2支持从多个文件中读取(其实从JMeter 1.9.1+就开始支持)。
当对某个文件进行第一次读取时,文件将被打开并读取到一个内部数组中。如果在读取过程中找到了空行,函数就认为到达文件末尾。
后续所有对同一个文件名的引用,都使用相同的内部数组。另外,文件名大小写对函数调用很重要,哪怕操作系统不区分大小写,CSVRead(abc.txt,0)和CSVRead(aBc.txt,0)会引用不同的内部数组。
使用*ALIAS特性可以多次打开同一个文件,另外还能缩减文件名称。
每一个线程都有独立的内部指针指向文件数组中的当前行。当某个线程第一次引用文件时,函数会为线程在数组中分配下一个空闲行。如此一来,任何一个线程访问的文件行,都与其他线程不同[除非线程数大于数组包含的行数]。

默认情况下,使用都好分割每一行的数据。如果希望在输入的列中使用逗号,那么需要换一个分隔符(通过设置属性csvread.delimiter来实现),且该符号没有在CSV文件的任何列中出现。

AttributeDescriptionRequired
文件名需要读入的文件名(或者别名)
列序号文件中第几个域(就是指定字符分割后第几块,从0编号开始)。0表示第一个域,1表示第二个域……。next表示跳过当前行,到文件下一行。*ALIAS为打开的文件分配一个别名



上面的例子会从一行中读取两列,接着从下一行中读取两列。如果所有变量都在同一个前置处理器中(用户参数上定义的),那么行都是顺序读取的。否则,不同线程可能会读取不同的行。

这一函数并不适合于读取很大的文件,因为整个文件都会被存储到内存之中。对于较大的文件,请使用配置元件CSV Data Set或者StringFromFile 。

__property

函数__property会返回一个JMeter属性的值。如果函数找不到属性值,而又没有提供默认值,则它会返回属性的名称。
例如,
${__property(user.dir)}:返回属性user.dir的值。
${__property(user.dir,UDIR)}:返回属性user.dir的值,并保存在变量UDIR中。
${__property(abcd,ABCD,atod)}:返回属性abcd的值 (如果属性没有定义,返回”atod”),并保存在变量ABCD 中。
${__property(abcd,,atod)}:返回属性abcd 的值(如果属性没有定义,返回”atod”),但是并不保存函数的返回值。

AttributeDescriptionRequired
属性名获取属性值、所需的属性名
变量名重用函数计算值的引用名
默认值属性未定义时的默认值


什么?不知道jmeter属性名如何查看?
WorkBench右键—>Add—>Non Test Elements—>Property Display

__P

类似__property,处理命令行中属性,和__property不同,__P不会保存属性值,如果没有指定默认值就假定为1
官网例子定义属性值:

jmeter -Jgroup1.threads=7 -Jhostname1=www.realhost.edu

获取值如下。
${__P(group1.threads)}:返回属性group1.threads的值。
${__P(group1.loops)}:返回属性group1.loops 的值。
${__P(hostname,www.dummy.org)}:返回属性hostname的值,如果没有定义该属性则返回值www.dummy.org。

在上面的例子中,第一个函数调用返回7,第二个函数调用返回1,而最后一个函数调用返回www.dummy.org(除非这些属性在其他地方有定义)

AttributeDescriptionRequired
属性名获取属性值、所需的属性名
默认值属性未定义时的默认值,未指定就假定是1
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JMeter学习(十六)JMeter函数学习
Jmeter参数化的4种方法
JMeter24个常用函数(二)
Jmeter参数化与关联--资料收集未整理
JMeter常用函数整理
深入理解JavaScript闭包(closure) – Felix Woo
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服