Json 相关

解析 Response

import groovy.json.JsonSlurper
def responseStr = prev.getResponseDataAsString()
def jsonSlurper = new JsonSlurper()
// String 转 Object,通过 mData["key"] 获取值
def mData = jsonSlurper.parseText(responseStr)

打印 Json

import groovy.json.JsonOutput

def book = new Book(id: 1, name: 'Thinking in Java')
def jsonOutput = new JsonOutput()
def result = jsonOutput.toJson(book)
//普通输出
println(result)
//格式化输出
println(jsonOutput.prettyPrint(result))

AssertResult相关

常用断言封装

void assertEqual(String expect, String expectDesc, String actual, String actualDesc) {
if (expect != actual) {
def errorMessage = "\'" + expectDesc + "\'" + " is not equal " + "\'" + actualDesc + "\'" + " ,expect: " + expect + " , but got: " + actual
AssertionResult.setResultForFailure(errorMessage)
}
} void assertEqual(int expect, String expectDesc, int actual, String actualDesc) {
if (expect != actual) {
def errorMessage = "\'" + expectDesc + "\'" + " is not equal " + "\'" + actualDesc + "\'" + " ,expect: " + expect + " , but got: " + actual
AssertionResult.setResultForFailure(errorMessage)
}
}

Thread相关

获取线程总数

// JSR223 脚本
ctx.getThreadGroup().getNumThreads() // ${__groovy(,)}函数调用
${__groovy(org.apache.jmeter.threads.JMeterContextService.getNumberOfThreads())} // 通过以下方法获取,会有一个 warn 级别的报错
${__groovy(ctx.getThreadGroup().getNumThreads(),)}

获取当前线程号

// Jmeter函数,适合调试
${__threadNum}

获取当前脚本路径

原因:在使用sample 的 upload file 功能时,传入 相对路径./uploadFile.pdf 会产生未知错误,需要传入绝对路径。所以提前获取当面脚本路径

import org.apache.jmeter.services.FileServer;
FileServer.getFileServer().getBaseDir(); # 直接调用
${__groovy(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();,)}

Cookie 相关

获取指定Cookie

import org.apache.jmeter.protocol.http.control.Cookie
import org.apache.jmeter.protocol.http.control.CookieManager def cookieManager = sampler.getCookieManager()
def size = cookieManager.getCookies().size()
for (i in 0..<size) {
def cookie = cookieManager.get(i)
/*SESSION为指定的cookie的name*/
if ("SESSION" == cookie.getName()) {
vars.put("sessionName", cookie.getName())
vars.put("sessionValue", cookie.getValue())
vars.put("sessionDomain", cookie.getDomain())
vars.put("sessionPath", cookie.getPath())
} else {
log.error("-------Cookies : " + cookie.getName() + "----------- " + cookie.getValue())
}
}

Property 相关

操作Property

Property是全线程共享,概念类似Java Class中的全局变量

在 JSR223 脚本中设置Property,不可直接调用 Jmeter 函数:${__setProperty(,,)}

需要设置、获取Property,可以调用以下方法:

import org.apache.jmeter.util.JMeterUtils
// 通过该方法只能设置 String 类型的value
JMeterUtils.setProperty("key", "value")
JMeterUtils.getProperty("key")

疑惑

  • 这节讲的脚本,部分都是JSR223(2)里面的内置函数重了,到底用哪个?
  • 内置函数收集归纳的是Groovy的,本篇是java的。两篇不论是内置函数,还是脚本都可以适用
  • 注意JSR223控件的语言别选择错了,用Groovy内置函数方便选择Groovy。选择java应该也可以~~~,毕竟是Groovy基于jvm的,会不会报错,我没试过,大家可以试下

最新文章

  1. iOS - 滑屏方案
  2. HTML5【语法要点】
  3. linux允许80端口通过
  4. 【软件推荐】 Moom-窗口布局软件(V.3.2.2)【破解+汉化】
  5. 【转】js判断手机访问网页
  6. Instruments_Activity Monitor使用入门
  7. C基础--函数指针的使用
  8. poj3468A Simple Problem with Integers(线段树,在段更新时要注意)
  9. 转载SSIS中的容器和数据流—数据转换(Transformations)续
  10. HDFS的Java客户端操作代码(查看HDFS下所有的文件或目录)
  11. IPC进程间通信 - AIDL+Binder
  12. LeetCode_Longest Consecutive Sequence
  13. Python的编码规范(PEP 8 &amp; Google Python guide)
  14. 20144306《网络对抗》MAL_逆向与Bof基础
  15. 修改或添加HTTP请求头
  16. 通过net time同步电脑时间
  17. centos7安装遇到的坑
  18. scrapy中crawlspide中callback和follow函数的作用及使用方法
  19. Linux使用tcpdump命令抓包并使用wireshark分析
  20. QQ传文件测试要点

热门文章

  1. ☕【Java技术指南】「并发原理专题」AQS的技术体系之CLH、MCS锁的原理及实现
  2. C51—模拟IIC总线实现EEPROM存取数据
  3. python的基础---常用的正则表达式
  4. 题解 P4449 于神之怒加强版
  5. 【HMC Core 6.0全球上线】图形计算服务新插件,助力高画质3D手游创新
  6. 在Activity和附贴的Fragment中同时使用多Surface错乱解决
  7. C#硬件访问(摄像头、麦克风)
  8. vue + iview 怎样在vue项目下添加ESLint
  9. .net core signalR 全局异常处理
  10. Heartbeat+HAProxy+MySQL半复制高可用架构