磷酸奥司他韦,JMeter断语&监听器(下),莫衷一是

频道:最近大事件 日期: 浏览:239

前语布景:上一篇讲了写通用断言及监听器元件,调试时常用观察成果树,运转脚本时主张禁用监听器,防止占用太多资源,可是简略的断言现已不能满意需求了?断言要变得灵敏,即动态断言,进行数据库断言。

来自官网的BeanShell解说

一、什么是BeanShell

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

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

BeanShell是用Java写成的,一个小型的、免费的、能够下载的、嵌入式的Java源代码解说器,具有目标脚本语言特性,十分精简的解说器jar文件巨细为175k。

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

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

二、Jmeter有哪些BeanShell

定时器: BeanShell Timer

前置处理器:BeanShell PreProcesso硬起来r

采样器: BeanShell Sampler

后置处理器:BeanShel磷酸奥司他韦,JMeter断言&监听器(下),无所适从l PostProcessor

断言: BeanShell断言

监听器: BeanShell Listener

三、BeanShell常用内置变量

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

log:写入信息到jmeber.log文件,运用办法:log.info(“This is log info!”);

ctx:该变量引证了当前线程的上下文,运用办法可参阅:org.apache.jmeter.t磷酸奥司他韦,JMeter断言&监听器(下),无所适从hreads.JMeterContext。

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

a我为主角播撒智商) vars.get(String key):从jmeter中取得变量值

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

更多办法可参阅:org.apache.jmeter.thr疯人院李乔eads.JMeterVariables

props -磷酸奥司他韦,JMeter断言&监听器(下),无所适从 (JMeterProperties - class java.吹缆机util.Properties):操作jmete屌丝影楼r特点,该变量引证了JMeter的装备信息,能够获取Jmeter的特点,它的隐婚100运用办法与vars相似,可是只能put进去String类型的值,而不能是一个目标。对应于java.util.Properties。

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

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

prev - (SampleResult):获取前面的sample回来的信息,常用办法:女神的阴阳参谋

a) getRespons纪伯伦致孩子最佳翻译eDataAsString():获取呼应信息

b) getResponseCode() :获取呼应code

更多办法可参阅:org.ap伊达政宗全歼友军ache.jmeter.samplers.SampleResult

sampler - (Sampler):gives access to女子步行街裸舞 the current sampl磷酸奥司他韦,JMeter断言&监听器(下),无所适从er

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

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

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

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

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

调用GSON的解析JSON办法,对稻田养鱼技能视频比两个数据,进行断言


import java.sql.*;
imp陈垣与启功ort java.util.*;
import java.lang.*;
import org.apache.regexp.*;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

//数据库衔接字段
String drive = "com.磷酸奥司他韦,JMeter断言&监听器(下),无所适从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 Mystmt = null;
ResultSet Myrset = null;

//获取恳求回来的出资id,后置处理器JSON提取出资Id:$.data.result.testId
String testId1= vars.get("testId");
//数据库履行sql
String query = "select * from databaseName.tableName丫鬟郑媛 where id='" + testId1+ "'";
//打印sql,查看是否正确;
log.info("\n这是sql句子:"+query+"\n");

//try中渡辰意迟生获取数据库衔接
try{
Mycon = DriverManager.getConnection(url+dbName, user, pass);
}catch(SQLException e){
}
Mystmt = Mycon.createStatement();
Myrset = Mystmt.executeQuery(que李守洪排名大师ry);
//prev.getResponseDataAsString是Jmeter供给的办法,能够调取前次恳求的呼应字符串
// response = ;
//假如取到库中的数据,赋值给history
while (Myrset.next()){
history = Myrset.getString(1);
}
Myrset.close();
Mystmt.close();

//strData接纳回来的报文,并转成字符串赋值给response
strData = prev.getResponseDataAsString();
String 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;
FailureMessage = "数据库没有记载,${msg}";
//调用Gson供给的Json目标euqals办法判别是否共同
}else if(!response.contains(history) == true) 磷酸奥司他韦,JMeter断言&监听器(下),无所适从
{
//把断言失利置为真
Failure = true;
FailureMessage = "呼应不包括历史记载出资Id";
}else{
FailureMessage="匹配成功!";
}
log.info("断言成果:"+FailureMessage+"\n");
print("断言成果:"+FailureMessage+"\n");
-------磷酸奥司他韦,JMeter断言&监听器(下),无所适从--------------

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

原文地址:https://blog.csdn.net/u011466469/article/details/7826049魔法酒馆7

作者:搜集明日的囬忆

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

热门
最新
推荐
标签