Java+Jmeter接口测试

一、创建工程、引包
1、创建JAVA工程
2、引入Jmeter中lib\ext基础包:ApacheJMeter_java.jar、ApacheJMeter_core.jar
3、引入Jmeter日志包:jorphan.jar,logkit-2.0.jar,commons-logging-1.1.1.jar,avalon-framework-4.1.4.jar
4、引入httpclient-4.3.4.jar(是一套http协议实现包)
Jmeter用到的4个类:

Arguments  :getDefaultParameters用于获取界面的参数

SampleResult:runTestJavaSamplerContext context) 类似于LR的Action

 

void( context) 初始化方法,类似于LR的init和Junit中的setUp()

void:teardownTest(JavaSamplerContext context) 类似于LR的end和Junit中的tearDown()

 

执行的先后顺序为:getDefaultParameters() --> setupTest(JavaSamplerContext context) -->
runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)
①、addArgument("name", "value")    定义参数
②、sampleStart()    定义事务的开始,类似于LR的lr_start_transaction,和LR一样事务间不要放无关代码
③、sampleEnd()    定义事务的结束,类似于LR的lr_end_transaction
④、setSuccessful(true、false)    设置运行结果的成功或失败,Jmeter统计成功失败的次数,在聚合报告中能够体现。
二、用例
1、TestApiGetSearchSuggestion.java,该代码实现对Api接口的请求,对返回的数据进行判断,并写文件。
2、Jmeter_GetSearchSuggestion.java,为本节介绍的重点

  1. package com.test.jmeter;
  2. import java.io.IOException;   
  3. import org.apache.http.client.ClientProtocolException;   
  4. import org.apache.jmeter.config.Arguments;   
  5. import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;   
  6. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;   
  7. import org.apache.jmeter.samplers.SampleResult;   
  8. public class Jmeter_GetSearchSuggestion extends AbstractJavaSamplerClient {   
  9. private static String label = "Jmeter_GetSearchSuggestion ";    //定义label名称,显示在jmeter的结果窗口  
  10. private String url;  
  11. private String data;  
  12. public void setupTest(){  
  13. //定义测试初始值,setupTest只在测试开始前使用  
  14. System.out.println("setupTest");  
  15. }  
  16. @Override  
  17. public SampleResult runTest(JavaSamplerContext arg0) {  
  18. url = arg0.getParameter("url");  
  19. data = arg0.getParameter("data");  
  20. SampleResult sr;  
  21. sr = new SampleResult();  
  22. sr.setSampleLabel(label);  
  23. TestApiGetSearchSuggestion t = new TestApiGetSearchSuggestion();  
  24. sr.sampleStart();  
  25. try {  
  26. //调用被压测接口的方法  
  27. t.PostJson(url, data);  
  28. sr.setSuccessful(true);  
  29. catch (ClientProtocolException e) {  
  30. sr.setSuccessful(false);  
  31. e.printStackTrace();  
  32. catch (IOException e) {  
  33. sr.setSuccessful(false);  
  34. e.printStackTrace();  
  35. }  
  36. sr.sampleEnd(); // jmeter 结束统计响应时间标记  
  37. return sr;  
  38. }  
  39. public void teardownTest(JavaSamplerContext arg0){  
  40. super.teardownTest(arg0);  
  41. }  
  42. public Arguments getDefaultParameters(){  
  43. //参数定义,显示在前台,也可以不定义  
  44. Arguments params = new Arguments();  
  45. params.addArgument("url", "http://gapp.test.com/merchandise/GetSearchSuggestion");  
  46. params.addArgument("data", "data={\"token\": \"aaaaaaaaaa\",\"body\": {\"keywords\": \"蓝月亮\"}}");  
  47. return params;  
  48. }  
  49. }  


3、main函数测试成功后,打成jar包,放到%Jmeter_Home%\lib\ext目录中即可


三、运行用例
1、运行%Jmeter_Home%\bin\jmeter.bat
2、添加线程组,Java请求、查看结果树、聚合报告
3、执行后的结果为

Tips:
快捷键
Ctrl+R运行用例、Ctrl+E清除运行结果

转载于:https://www.cnblogs.com/camilla/p/7127780.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Discuz3.3精仿小米风格整站模板制作——1、新建模板方案

术语说明: 模板——模板是一堆按照规定命名方式的html文件,用于指定整个论坛不同页面的外观。标签——标签和模板共同作用以实现论坛换肤功能,其中标签主要控制页面显示什么数据,显示多少条等。风格——风格是一个xml配置文件&…

mysql自增长序号_MySQL rownumber SQL生成自增长序号使用介绍

下面介绍几种具体的实现方法.建立实验环境如下mysql> create table tbl (-> id int primary key,-> col int-> );Query OK, 0 rows affected (0.08 sec)mysql> insert into tbl values-> (1,26),-> (2,46),-> (3,35),-> (4,68),-> (5…

php运行出现Call to undefined function curl_init()解决方法

php运行出现Call to undefined function curl_init() 64位win7/8 下PHP不支持CURL 除了将PHP.ini中的;extensionphp_curl.dll前面的";" 去掉,还需要如下操作,(因apache,php版本的原因有些人电脑可能要执行第一步&#…

python水平_如何在python中水平透视表

目前我有以下格式的表格:Geo-id Name stat Year index111500 Anniston-Oxford-Jacksonville AL 1991 0111500 Anniston-Oxford-Jacksonville AL 1992 91.675111500 Anniston-Oxford-Jacksonville AL 1993 93.8025111500 Anniston-Oxford-Jacksonville AL 1994 96.63…

php 把一个数组分成有n个元素的二维数组的算法

一、第一种解法 <?php //把一个数组分成几个数组//$arr 是数组//$num 是数组的个数function partition($arr,$num){//数组的个数$listcountcount($arr);//分成$num 个数组每一个数组是多少个元素$paremfloor($listcount/$num);//分成$num 个数组还余多少个元素$paremm$list…

linux安装mysql 5.6_linux 安装mysql5.6

(1)rpm -qa | grep mysql检查系统中是否已安装 MySQL。 返回空值的话&#xff0c;就说明没有安装 MySQL 。注意&#xff1a;在新版本的CentOS7中&#xff0c;默认的数据库已更新为了Mariadb&#xff0c;而非 MySQL&#xff0c;所以执行 yum install mysql 命令只是更新Mariadb数…

Windows 环境下运用Python制作网络爬虫

import webbrowser as web import time import os i 0 MAXNUM 1 while i < MAXNUM:web.open_new_tab(要刷的网络地址)os.system(taskkill /F /IM 浏览器文件名称(chrome.exe))i 1 else:print happly day! 代码和简单仅仅要一个第三方的函数和调用系统的文件就OK了。记住给…

selenium禁止弹窗_python:使用带有selenium的firefox时禁用下载弹出窗口

我有使用selenium和firefox自动执行下载操作的脚本。问题是每当我运行这个脚本时&#xff0c;我总是从firefox弹出&#xff0c;不停地问我想做什么样的操作&#xff0c;即使我在firefox首选项中设置了下载路径。我检查了文件和文件夹来创建主控形状模拟类型.rdf所有的用户&…

普元连接mysql_普元EOS 案例 - 还有一行代码的个人空间 - OSCHINA - 中文开源技术交流社区...

1 创建项目1) 进入EOS Studio开发透视图&#xff1b;单击主菜单项“文件”选择“新建”->“空EOS项目2) 在弹出的“创建空EOS项目”视图中&#xff0c;配置相关参数。“项目名称”&#xff1a;EOSTriping&#xff0c;3) 单击【完成】按钮&#xff0c;系统完成该项目框架…

十年WEB技术发展历程

Ajax03年的时候我上六年级。那时候网吧刚在小县城的角落萌生。传奇&#xff0c;大话西游第一代网游一时风靡。我抱着试一试的心态给了网吧老板两块钱想申请个号玩玩&#xff0c;然后接下来的一个小时我一直在&#xff0c;注&#xff0c;冊&#xff0c;账。号。彼时网吧用的512k…

Python之编写登陆接口

1.输入用户名密码&#xff1b; 2.认证成功后显示欢迎信息&#xff1b; 3.错误三次后&#xff0c;账号被锁定。 账号文件&#xff1a;user.txt 锁定文件&#xff1a;locked.txt 流程图如下&#xff1a; # -*- coding:utf-8 -*- # Author Caoxl import sysaccount_fileE:\user…

java符号引用 直接引用_Java -- JVM的符号引用和直接引用

Java -- JVM的符号引用和直接引用在JVM中类加载过程中&#xff0c;*在解析阶段&#xff0c;Java虚拟机会把类的二级制数据中的符号引用替换为直接引用。*1.符号引用(Symbolic References)&#xff1a;符号引用以一组符号来描述所引用的目标&#xff0c;符号可以是任何形式的字面…

Arduino学习笔记24

指导学生编程练习转载于:https://www.cnblogs.com/guochaoxxl/p/7148006.html

好全的Android面试题

转载&#xff1a;http://www.jianshu.com/p/84ee896c3329 需求描述 各种新技术接触渠道比较狭窄, 面试没有底气。 常见面试知识点及回答没有较系统的准备&#xff0c;就业指导提供的资料没时间看&#xff0c;看了记不住。 面试没有经验, 不清楚面试前要做的各种准备、面试过程…

JavaSE--类加载器

参考&#xff1a;http://www.importnew.com/6581.html Java 编译器会为虚拟机转换源指令。虚拟机代码存储在以 .class 为扩展名的类文件中&#xff0c;每个类文件都包含某个类或者接口的定义和代码实现。这些类文件必须由一个程序进行解释&#xff0c;该程序能够将虚拟机的指令…

Linux下汇编语言学习笔记13 ---

这是17年暑假学习Linux汇编语言的笔记记录&#xff0c;参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译《汇编语言基于Linux环境》的书&#xff0c;喜欢看原版书的同学可以看《Assembly Language Step-By-Setp:Programming with Linux 3rd Edition》&#xff0c;非常感谢该…

java netbeans 教程_NetBeans 教程

NetBeans IDE Java 快速入门教程第一章本章通过指导您创建一个简单的 "Hello World" Java 控制台应用程序&#xff0c;简要介绍 NetBeans IDE 工作流。学习完本教程后&#xff0c;您将对如何在 IDE 中创建和运行应用程序有一个基本了解。学习完本教程所需的时间不到 …

几个python小程序

python小程序 1-100求和 1 def Sum(x, y):2 return xy3 print reduce(lambda x,y:xy,range(1,101))4 5 i 16 j 07 while i < 101:8 j i j9 i 1 10 print j View Code输出1-100之间的奇偶数1 i 1 2 a [] 3 while i < 100: 4 if i%2 0: 5 …

java输出a-z_有1-26个数字和a-z字母,用Java多线程实现先输出2和数字再输出2个字

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼public class Z extends Thread{char[] letters new char[]{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z};public static void main(String[] args){Z z new Z();X x new X();x.start();z.start();}public void run()…

Linux下git使用

一、安装 本人使用的是centos 7&#xff0c;首先安装git 1.下载git&#xff1a;wget https://Github.com/Git/Git/archive/v2.3.0.tar.gz 2.下载之后解压&#xff1a;tar xvf v2.3.0.tar.gz 3.进入解押文件目录&#xff1a;cd git-2.3.0 4.依次运行如下命令&#xff1a; ./conf…