用户可以在jmeter- “beanShell断言”中自定义断言。自由灵活的用脚本实现自己的断言  
beanShell断言接口介绍  
在beanShell中直接可以调用的变量,无需加前缀。  
1.log 打印日志 log.info(“在控制台打印日志”);  
2.SampleResult 获取SampleResult对象,可以通过这个对象获取想要的信息  
3.Response 获取Response对象,可以通过这个对象获取对应的信息  
4.Failure 查看接口调用是否成功,如果返回false是成功的,true是失败的  
5.FailureMessage 失败信息,没有设置的时候失败信息是空的。可以set这个信息  
6.ResponseData 获取 response body,类型是byte[]  
7.ResponseCode 返回接口code,成功是200  
8.ResponseMessage 获取msg,成功是OK  
9.ResponseHeaders 获取接口服务端返回的头部信息  
10.RequestHeaders 获取客户端请求的头部信息  
11.SampleLabel 获取接口请求的名称  
12.SamplerData 获取请求的url和body  
13.ctx 代表上下文信息,可以直接使用  
14.vars 可以直接调用,将获取的数据变成jmeter变量(put),也可以获取用户自定义的变量(get)  
eg:  
1.在http sample下添加一个beanShell断言  
2.编写script  
import org.apache.jmeter.assertions;  
import org.apache.jmeter.samplers.SampleResult;  
import org.apache.jmeter.assertions.AssertionResult;  
import org.json.*;

String response_data = prev.getResponseDataAsString();//获取接口返回的response数据  
JSONObject data_obj = new JSONObject(response_data);//转换成json  
//判断code是否等于0 如果等于0 再取里面的字段  
String code = data_obj.get(“code”);  
if(code.equals(“0”))  
{  
String user_name = data_obj.get(“data”).get(“user”).get(“userName”).toString();  
//这里的my_name 是用户自定义的变量或者之前的接口返回获取的  
if(user_name.equals(${my_name})){  
Failure = false; //设置成false 表示接口跑成功,在结果树中sample是绿色的  
//做后续动作  
…….  
}  
else{  
//做其他动作  
}  
}  
else  
{  
Failure = true;//直接判断失败,表示接口跑失败,在结果树中sample是红色的  
prev.setStopThread(true);//如果断言失败,后面的接口不需要再跑,直接暂停  
}

 
分类: JMeter

(jmeter内置可调用的变量)jmeter beanShell断言的更多相关文章

  1. JMeter 内置日期(时间)函数总结

    JMeter 内置日期(时间)函数总结   by:授客 QQ:1033553122 1. 测试环境 apache-jmeter-3.3 下载地址: http://jmeter.apache.org/c ...

  2. JMeter ----内置函数列表

    Jmeter有两种类型的函数: 用户定义的静态值(或变量) 内置函数 用户定义的静态值允许用户定义变量时被替换为静态的值测试树编译并提交运行.需要注意的是,变量目前无法嵌套,即${Var${N}}不起 ...

  3. Thymeleaf 之 内置对象、定义变量、URL参数及标签自定义属性

    Thymeleaf 之 内置对象.定义变量.URL参数及标签自定义属性 本文章来自[知识林] 如标题所述,这篇文章主要讲述Thymeleaf中的内置对象(list解析.日期格式化.数字格式化等).定义 ...

  4. awk内置函数、外部变量

    外部变量 ①获取外部变量 格式: awk '{action}' 变量名=变量值 ,这样传入变量可以在action中获得值. 示例: test='awk test'--day-5 外部变量 ①获取外部变 ...

  5. 腾讯课堂1:使用Jmeter内置的录制功能进行录制

    1.设置http代理服务器 打开火狐——点击选项——高级——网络——设置  设置完成点击确定 2.查看端口是否被占用的命令 netstat -ano 3.排除模式 .*\.gif .*\.css .* ...

  6. tornado内置接口调用顺序initialize\prepare...

    一. initialize方法 首先, 该方法是框架预留的一个初始化时加载自定义内容的钩子, 其会在http请求方法之前调用 二. prepare方法 预处理方法, 在执行对应的请求方法之前调用. h ...

  7. GLSL语言内置的变量详解

    GLSL语言内置的变量,包括内置的顶点属性(attribute).一致变量(uniform).易变变量(varying)以及常量(const),一方面加深印象,另一方面今天的文章可以为以后的编程做查询 ...

  8. Perl中的特殊内置变量详解

    #!/usr/bin/perl -w @array = qw(a b c d); foreach (@array) { print $_," "; } 例子的作用就是定义一个数组并 ...

  9. JMeter36个内置函数及11个新增函数介绍

    JMeter内置了36个函数,这些函数可以通过函数助手进行编辑和测试.了解这些函数,不仅能提高JMeter的使用熟练度,也有助于知晓测试工具或测试框架通用的函数有哪些,在自主设计时,作为参考借鉴. J ...

随机推荐

  1. ACM学习历程—Hihocoder 1290 Demo Day(动态规划)

    http://hihocoder.com/problemset/problem/1290 这题是这次微软笔试的第三题,过的人比第一题少一点,这题一眼看过去就是动态规划,不过转移方程貌似不是很简单,调试 ...

  2. vue-router路由嵌套的使用

    vue-router路由嵌套的使用,以及子路由中设置默认路由: 项目结构: 在/src/App.vue文件中: <template> <div id="app"& ...

  3. 逐步改用 IronPython 开发你的 ASP.NET 应用程序

    IronPython for ASP.NET 的 CTP 已经发布有一段时间了,我们在看了官方提供的范例之后,相信对一个 ASP.NET 应用程序中完全使用 IronPython 开发还是有一些担心的 ...

  4. Git 系列之tag的用法---为你的代码标记版本号

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 本地仓库操作 远程仓库操作 其他 tag 操作   在做app开发的时候经常有版本的概念,比如v1.0.v1.1之类的,不同 ...

  5. 【转】 Pro Android学习笔记(三二):Menu(3):Context菜单

    目录(?)[-] 什么是Context menu 注册View带有Context menu 填Context菜单内容 Context菜单点击触发 什么是Context menu 在桌面电脑,我们都很熟 ...

  6. UML核心元素--包

    包是一种容器,如同文件夹一样,将某些信息分类,形成逻辑单元.包可以容纳任何UML元素,例如用例.业务实体.类图等,也包括子包. 一.分包原则: (1)高内聚:被分入同一个包的元素相互联系紧密,伸至不可 ...

  7. docker启动

    启动容器 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动. 因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器 ...

  8. 树莓派 Learning 002 装机后的必要操作 --- 05 给树莓派搭建“x86 + pi”环境 -- 安装**32位运行库** -- 解决`E:未发现软件包 xxx` 问题

    树莓派 装机后的必要操作 - 给树莓派搭建"x86 + pi"环境 – 安装32位运行库 – 解决E:未发现软件包 xxx 问题 我的树莓派型号:Raspberry Pi 2 Mo ...

  9. vue.js基础学习(2)

    vm=new vue({ date:{name:"aa", user:{“name”:"lsm"}}); 获取属性值 1:vm.name 2:vm.$data. ...

  10. setTimeout关于函数名做参数的问题

    前几天在调bug时发现一个诡异的问题. function test(){ alert('4 seconds!'); } setTimeout(test(),4000); 这段代码立即执行,当时看不出问 ...