Json 相关

解析 Response

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

打印 Json

  1. import groovy.json.JsonOutput
  2.  
  3. def book = new Book(id: 1, name: 'Thinking in Java')
  4. def jsonOutput = new JsonOutput()
  5. def result = jsonOutput.toJson(book)
  6. //普通输出
  7. println(result)
  8. //格式化输出
  9. println(jsonOutput.prettyPrint(result))

AssertResult相关

常用断言封装

  1. void assertEqual(String expect, String expectDesc, String actual, String actualDesc) {
  2. if (expect != actual) {
  3. def errorMessage = "\'" + expectDesc + "\'" + " is not equal " + "\'" + actualDesc + "\'" + " ,expect: " + expect + " , but got: " + actual
  4. AssertionResult.setResultForFailure(errorMessage)
  5. }
  6. }
  7.  
  8. void assertEqual(int expect, String expectDesc, int actual, String actualDesc) {
  9. if (expect != actual) {
  10. def errorMessage = "\'" + expectDesc + "\'" + " is not equal " + "\'" + actualDesc + "\'" + " ,expect: " + expect + " , but got: " + actual
  11. AssertionResult.setResultForFailure(errorMessage)
  12. }
  13. }

Thread相关

获取线程总数

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

获取当前线程号

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

获取当前脚本路径

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

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

Cookie 相关

获取指定Cookie

  1. import org.apache.jmeter.protocol.http.control.Cookie
  2. import org.apache.jmeter.protocol.http.control.CookieManager
  3.  
  4. def cookieManager = sampler.getCookieManager()
  5. def size = cookieManager.getCookies().size()
  6. for (i in 0..<size) {
  7. def cookie = cookieManager.get(i)
  8. /*SESSION为指定的cookie的name*/
  9. if ("SESSION" == cookie.getName()) {
  10. vars.put("sessionName", cookie.getName())
  11. vars.put("sessionValue", cookie.getValue())
  12. vars.put("sessionDomain", cookie.getDomain())
  13. vars.put("sessionPath", cookie.getPath())
  14. } else {
  15. log.error("-------Cookies : " + cookie.getName() + "----------- " + cookie.getValue())
  16. }
  17. }

Property 相关

操作Property

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

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

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

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

疑惑

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

Jmeter系类(33) - JSR223(3) | java常用脚本的更多相关文章

  1. Jmeter系类(31) - JSR223(1) | 控件介绍

    JSR233 介绍 JSR223控件执行JSR223脚本代码用于创建/更新所需的某些变量 JSR223可以使用其内置的变量,有助于精简脚本,提高开发测试的效率 由于JSR223脚本编译方式基本相同,J ...

  2. Jmeter系类(32) - JSR223(2) | Groovy常见内置函数及调用

    常见内置函数及调用 获取相关函数 获取返回数据并转换为String字符串 prev.getResponseDataAsString() 例子 String Responsedata = prev.ge ...

  3. JavaEE-实验一 Java常用工具类编程

    该博客仅专为我的小伙伴提供参考而附加,没空加上代码具体解析,望各位谅解 1.  使用类String类的分割split 将字符串  “Solutions to selected exercises ca ...

  4. Java常用的加密解密类(对称加密类)

    Java常用的加密解密类 原文转载至:http://blog.csdn.net/wyc_cs/article/details/8793198 原创 2013年04月12日 14:33:35 1704 ...

  5. Beanshell vs JSR223 vs Java JMeter脚本:性能关闭你一直在等待!

    有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能.查看最流行的扩展机制,比较性能并分析哪一个是最好的. 这是乐队之战,JMeter风格. Beanshell V. JSR223 V ...

  6. Java常用类详解

    目录 1. String类 1.1 String的特性 1.2 String字面量赋值的内存理解 1.3 String new方式赋值的内存理解 1.4 String 拼接字面量和变量的方式赋值 1. ...

  7. Java常用类,这一次帮你总结好!

    常用类 常用类概述: 内部类 Object类 包装类 数学类 时间类 字符串 String Builder和StringBuffer DecimalFormat 一.内部类 概念:在一个类内部再定义一 ...

  8. java多线程系类:基础篇:06线程让步

    本系类的知识点全部来源于http://www.cnblogs.com/skywang12345/p/3479243.html,我只是复制粘贴一下,特在此说明. 概要 本章,会对Thread中的线程让步 ...

  9. java多线程系类:基础篇:03Thread中的start()和run()的区别

    这个系类的内容全部来源于http://www.cnblogs.com/skywang12345/p/3479024.html.特别在此声明!!! 概要 Thread类包含start()和run()方法 ...

随机推荐

  1. AttributeError: module 'numpy' has no attribute 'num'

    AttributeError: module 'numpy' has no attribute 'num' 写在前面 总的来说,先看看自己用的计算方式是不是写对了先,多个一起使用的话记得都看看 通过想 ...

  2. Java文件和Java包结构

    Java中的包概念 Java中的包是封装一组类,子包和接口的机制.软件包用于: 防止命名冲突.例如,可以有两个名称分别为Employee的类,college.staff.cse.Employee和co ...

  3. SpringBoot开发六-发送邮件

    需求介绍-发送邮件 首先要进行邮箱设置,要启用客户端SMTP服务. 而且SpringBoot也给了JavaMailSender发送邮件. 代码实现 首先你需要设置好邮箱,步骤百度一大堆,记住要配置一个 ...

  4. java8-stream常用操作(1)

    前言 java8的Stream 流式操作,用于对集合进行投影.转换.过滤.排序.去重等,更进一步地说,这些操作能链式串联在一起使用,类似于 SQL 语句,可以大大简化代码.下面我就将平时常用的一些st ...

  5. nvcatmysql安装注册流程以及远程登陆配置步骤

    前言:网络上下载工具良莠不齐,找到合适的比较困难.因为nvcat回收了网络上的大部分注册码,这个nvcatformysql下载到可以破解的费了点时间,最后经过配置成功远程登陆到mysql,在此记录一下 ...

  6. Json序列化更新好友列表

    一.概述 使用Newtonsoft.Json开源库进行序列化 二.代码 using Newtonsoft.Json; using System; using System.Collections.Ge ...

  7. Javascript - Vue - 路由

    vue router.js 下载:vue-router.js, 该文件依赖于vue.js <script src="Scripts/vue-2.4.0.js">< ...

  8. 关于Junit中Assert已经过时

    在junit4.12之后,Assert就过时了,提供了TestCase来取代: 同样在TestCase中原本比较常见的一些方法也已经取消了,例如:assertNotEquals.assertThat. ...

  9. 如何让BootStrap栅格之间留出空白间隙呢?

    BootStrap栅格之间留出空隙 BootStrap栅格系统可以把我们的container容器划分为若干等分,如果想要每个部分之间留出一定的空隙,我们很可能首先想到的方法就是用margin外边距来使 ...

  10. 并发编程之:synchronized

    大家好,我是小黑,一个在互联网苟且偷生的农民工. 之前的文章中跟大家分享了关于Java中线程的一些概念和基本的使用方法,比如如何在Java中启动一个线程,生产者消费者模式等,以及如果要保证并发情况下多 ...