转行后首次使用Jmeter----基本使用

Jmeter上下文引用

变量引用:${para}, 比如用于请求头,或者参数化请求body;

引用jmeter系统变量:**${__property(para)}**

https://jmeter.apache.org/usermanual/functions.html#__property

那么jmeter如何设置变量?

eg:

  • jsonpath提取值
  • 元器:用户参数、信息头管理器
  • functions语法设置:${__setProperty(sessionToken, ${sessiontoken},)},将${sessiontoken}该引用变量设置为Jmeter系统变量sessionToken,之后就可以${sessiontoken}来引用

Jmeter: Functions and Variables

食用方法:**${__functionName(var1,var2,var3)}**

特别注意:在代码中食用方式如下:

1
2
3
正确例子:var person = "啊哈${__threadNum}"

错误例子:var person = "啊哈" + ${__threadNum}.toString()

常用函数举例:

1
2
3
4
5
${__time(dd/MM/yyyy,)}
#如果在 2018 年 1 月 21 日运行, 将返回21/01/2018

${__CSVRead(random.txt,0)}
#适用小文件

更多食用方法参考函数助手:

image-20220214203401644

值得注意的是,在脚本中直接引用jmeter函数,应当作为变量来使用,而不是已知变量:

1
2
3
4
# 正确写法
var ${__CSVRead(D:\test.csv,0)} = "卡库拉";
错误写法,报错XXX未定义
var aa = ${__CSVRead(D:\test.csv,0)};

image-20220214205219976

官网参考网址:

https://jmeter.apache.org/usermanual/functions.html#

JSR223 预处理程序

先认识一下老的BeanShell处理程序

https://jmeter.apache.org/usermanual/functions.html#__BeanShell

https://jmeter.apache.org/usermanual/component_reference.html#BeanShell_Sampler

  • ctx - JMeterContext object,以ctx为例,是Jmetercontext类,便可以找到该类下的方法,举例,可以通过ctx.getCurrentSampler()去引用
  • vars - JMeterVariables object,这个涉及到最基础的变量使用方式,比如var.put(key,value),var.get(key)
  • props - JMeterProperties (class java.util.Properties) object
  • threadName - the threadName (String)
  • Sampler - the current Sampler, if any
  • SampleResult - the current SampleResult,
  • props - JMeterProperties (class java.util.Properties) 该方法也很重要。
  • 补充区别:vars 只能在当前线程内使用,props 可以跨线程组使用
    vars 只能保存 String 或者 Object,props 是 Hashtable 对象

接下来看下JSR223处理器

https://jmeter.apache.org/usermanual/component_reference.html#JSR223_Sampler

值得注意的是这几句话:

1
2
3
When using this feature, ensure your script code does not use JMeter variables or JMeter function calls directly in script code as caching would only cache first replacement. Instead use script parameters.

To benefit from caching and compilation, the language engine used for scripting must implement JSR223 Compilable interface (Groovy is one of these, java, beanshell and javascript are not)

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!