Jmeter系类(33) - JSR223(3) | java常用脚本
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的,会不会报错,我没试过,大家可以试下
Jmeter系类(33) - JSR223(3) | java常用脚本的更多相关文章
- Jmeter系类(31) - JSR223(1) | 控件介绍
JSR233 介绍 JSR223控件执行JSR223脚本代码用于创建/更新所需的某些变量 JSR223可以使用其内置的变量,有助于精简脚本,提高开发测试的效率 由于JSR223脚本编译方式基本相同,J ...
- Jmeter系类(32) - JSR223(2) | Groovy常见内置函数及调用
常见内置函数及调用 获取相关函数 获取返回数据并转换为String字符串 prev.getResponseDataAsString() 例子 String Responsedata = prev.ge ...
- JavaEE-实验一 Java常用工具类编程
该博客仅专为我的小伙伴提供参考而附加,没空加上代码具体解析,望各位谅解 1. 使用类String类的分割split 将字符串 “Solutions to selected exercises ca ...
- Java常用的加密解密类(对称加密类)
Java常用的加密解密类 原文转载至:http://blog.csdn.net/wyc_cs/article/details/8793198 原创 2013年04月12日 14:33:35 1704 ...
- Beanshell vs JSR223 vs Java JMeter脚本:性能关闭你一直在等待!
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能.查看最流行的扩展机制,比较性能并分析哪一个是最好的. 这是乐队之战,JMeter风格. Beanshell V. JSR223 V ...
- Java常用类详解
目录 1. String类 1.1 String的特性 1.2 String字面量赋值的内存理解 1.3 String new方式赋值的内存理解 1.4 String 拼接字面量和变量的方式赋值 1. ...
- Java常用类,这一次帮你总结好!
常用类 常用类概述: 内部类 Object类 包装类 数学类 时间类 字符串 String Builder和StringBuffer DecimalFormat 一.内部类 概念:在一个类内部再定义一 ...
- java多线程系类:基础篇:06线程让步
本系类的知识点全部来源于http://www.cnblogs.com/skywang12345/p/3479243.html,我只是复制粘贴一下,特在此说明. 概要 本章,会对Thread中的线程让步 ...
- java多线程系类:基础篇:03Thread中的start()和run()的区别
这个系类的内容全部来源于http://www.cnblogs.com/skywang12345/p/3479024.html.特别在此声明!!! 概要 Thread类包含start()和run()方法 ...
随机推荐
- AttributeError: module 'numpy' has no attribute 'num'
AttributeError: module 'numpy' has no attribute 'num' 写在前面 总的来说,先看看自己用的计算方式是不是写对了先,多个一起使用的话记得都看看 通过想 ...
- Java文件和Java包结构
Java中的包概念 Java中的包是封装一组类,子包和接口的机制.软件包用于: 防止命名冲突.例如,可以有两个名称分别为Employee的类,college.staff.cse.Employee和co ...
- SpringBoot开发六-发送邮件
需求介绍-发送邮件 首先要进行邮箱设置,要启用客户端SMTP服务. 而且SpringBoot也给了JavaMailSender发送邮件. 代码实现 首先你需要设置好邮箱,步骤百度一大堆,记住要配置一个 ...
- java8-stream常用操作(1)
前言 java8的Stream 流式操作,用于对集合进行投影.转换.过滤.排序.去重等,更进一步地说,这些操作能链式串联在一起使用,类似于 SQL 语句,可以大大简化代码.下面我就将平时常用的一些st ...
- nvcatmysql安装注册流程以及远程登陆配置步骤
前言:网络上下载工具良莠不齐,找到合适的比较困难.因为nvcat回收了网络上的大部分注册码,这个nvcatformysql下载到可以破解的费了点时间,最后经过配置成功远程登陆到mysql,在此记录一下 ...
- Json序列化更新好友列表
一.概述 使用Newtonsoft.Json开源库进行序列化 二.代码 using Newtonsoft.Json; using System; using System.Collections.Ge ...
- Javascript - Vue - 路由
vue router.js 下载:vue-router.js, 该文件依赖于vue.js <script src="Scripts/vue-2.4.0.js">< ...
- 关于Junit中Assert已经过时
在junit4.12之后,Assert就过时了,提供了TestCase来取代: 同样在TestCase中原本比较常见的一些方法也已经取消了,例如:assertNotEquals.assertThat. ...
- 如何让BootStrap栅格之间留出空白间隙呢?
BootStrap栅格之间留出空隙 BootStrap栅格系统可以把我们的container容器划分为若干等分,如果想要每个部分之间留出一定的空隙,我们很可能首先想到的方法就是用margin外边距来使 ...
- 并发编程之:synchronized
大家好,我是小黑,一个在互联网苟且偷生的农民工. 之前的文章中跟大家分享了关于Java中线程的一些概念和基本的使用方法,比如如何在Java中启动一个线程,生产者消费者模式等,以及如果要保证并发情况下多 ...