垃圾分类手抄报,JMeter断语&监听器(下),喉咙痒咳嗽

前语布景:上一篇讲了写通用断语及监听器元件,调试时常用观察成果树废物分类手抄报,JMeter断语&监听器(下),嗓子痒咳嗽,运转脚本时主张禁用监杰罗姆皮纳听器,防止占用太多资源,可是简略的断语现已不能满意需求了?断语要变得灵敏,即动态断语,进行数据库断语。

来自官网的BeanShell解说

一、什么是BeanShell

BeanShell是一种完全符合Java语法规范的脚本语言,而且又具有自己的一些语d2671法和办法;

BeanShell是一种松懈类型的脚本语言(这点和JS相似);

BeanShell是用Java写成的,一个小型的、免费的、废物分类手抄报,JMeter断语&监听器(下),嗓子痒咳嗽能够下载的、嵌入式的Java源代码解说器,具土茅帅有目标脚本语言特性,十分精简的解说器jar文件大小滴组词为175k。

BeanShell履行规范Java句子和表达式,别的包括一些脚本指令和语法。

官网:http://www.BeanShell.org/

二、Jmeter有哪些BeanShell

定时器: B废物分类手抄报,JMeter断语&监听器(下),嗓子痒咳嗽eanShell Timer

前置处理器:BeanShell PreProcessor

采样器: BeanShell Sampler

后置处理器:BeanShell PostProcessor

断语: BeanShell断语

监听器:废物分类手抄报,JMeter断语&监听器(下),嗓子痒咳嗽 BeanShell Listener

三、BeanShell常用内置变量

JMeter在它的BeanShell中内置了变量,用户能够经过这些变量与JMeter进行交互,其间首要的变量及其运用办法如下:

log:写入废物分类手抄报,JMeter断语&监听器(下),嗓子痒咳嗽信息到jmeber.log文件,运用办法:log.info(“This is log info!”);

ctx:该变量引证了当前线程的上下文,运用办法可参阅:org.apache.jmeter.threads.JMeterContext。

vars - (JMeterVariables):操作jmeter变量,这个变量实践引证了JMeter线程中的局部变量容器(本质上是Map),它是测验用例与BeanShell交互的桥梁,常用办法:

a) vars.get(String key):从jmeter中取得变量值

b) vars.put(String key,String value):数据存到jmeter变量中

更多办法可参阅:org.apache.jmeter.threads.J护陵铠MeterVariables

props - (JMeterProperties - class java.util.Properties):俞安全操作jmeter特点,该变量引证了JMeter的装备信息,能够获取Jmeter的特点,它的运用办法与vars相似,可是只能put进去String类型的值,而不能是一个目标。对应于java.util.Properties。

a) props.get("START.HMS"); 注:START.HMS为特点名,在文件jmeter.properties中界说

b) props.put("PROP1","1234");

prev - (SampleResult):获取前面的sample回来的信息,常用办法:

a) getResponseDataAsString():获取呼应信息

b) getResponseCode() :获取呼应code

更多办法可参阅:org.apache.jmeter.samplers.Sa女儿的小mpleResult

sampler - (Sampler):gives access to the current sampler

四、前面三点了解BeanShell这个高档功用,那么接下来怎样运用其beanshell 断语元件呢?本地由于没有布置项目及数据库,只能贴出脚本代码,大部分的思路:

历史数据存储到MySQL数据库里,

Jmeter读取参数化的CSV文件,把测验用例都存入CSV文件一次履行,

CSV文件和数据库中数据用ID相关,

每次断语都用BeanShell运用JDBC衔接mysql库,运用测验用例的ID查出MYSQL中的数据

调用GSON的解析JSON办法,比照两个数据,进行断语


import java.sql.*;
import java.util.*;
import java.lang.*;
import org.apache.regexp.*;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

//数据库衔接字段
String drive =抽电子烟肺会有积液吗 "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://1111.1.111.111:33306/";
String dbName = "databaseName";
String user = "username";
String pass = "password";

Connection Mycon = null;
Statement Mcamranystmt = null;
ResultSet Myrset = null;

//获取恳求回来的出资id,后置处理器JSON提取出资Id:$.data.resul妖周泰t.testId
String testId1= vars.g王文银背面本钱大鳄et("testId");
//数据库履行sql
String query = "select * from databaseName.tableName where id='" + testId1+ "'";
//打印sql,查看是否正确;
log.info("\n这是sql句子:"+query+"\n");

//try中获取数据库衔接
try{
Mycon = DriverManager.getConnection(url+db清川静江Name, user, pass);
}catch(SQLException e){
}
M戒欲ystmt = Mycon.createStatement();
Myrset废物分类手抄报,JMeter断语&监听器(下),嗓子痒咳嗽 = Mystmt.executeQuery(query);
//prev.getResponseDataAsString是Jmeter供给的办法,能够调取前次恳求的呼应字符串
// response = ;
//假如取到库中的数据,赋值给history
while (Myrset.next()){
history = Myrset.getString(1);
}
Myrset.close();
Mystmt.close();

//strData接纳回来的报文,并转成字符串赋值给response
strData = prev.getResponseDataAsString();
Str星际精灵蓝多多全集爱奇艺ing response=strData.toString();
//打印在控制台
print("sql查询的出资Id:"+history+"\n");
print("接口恳求回来的出资Id:"+response+"\n");
log.info("sql查询的出资Id:"+history+"\n");
log.info("接口恳求回来的出资Id:"+response+"\n");
if孙仪之(history == "")
{
Failure = true;
Failu废物分类手抄报,JMeter断语&监听器(下),嗓子痒咳嗽reMessage = "数据库没有记载,${msg}";
//调用Gson供给的Json目标euqals办法判别是否共同
}els伊达政宗全歼友军e if(!response.contains(history) == true)
{
//把断语失利置为真
Failure = true;
FailureMessage = "呼应不包括历史记载出资Id";
}else{
FailureMessa永久地址ge="匹配成功!";
}
log.info("断语成果:"+FailureMessage+"\n");
print("断语成果:"+FailureMessage+"\n");
---------------------

五、上面简略贴出一份beanshell assertion的脚本,那么监听器了?是为了陈述输出而存在的。在插件方面不断完善了JMet天性2er报狒狒人品表方面的缺点,渐渐的变得丰厚,做功能测验也愈加超卓。

原文地址:https://blog.csdn.net/u011466469/article/details/78260497

作者:搜集明日的囬忆

如有侵权,请联络删去,谢谢。