LoadRunner JAVA Vuser接口测试
注:JDK只支持1.6
1、创建工程Test
2、写个经典的HelloWorld类。
3、Runas---》Java Application运行下
4、将工程下的整个com包拷贝到loadrunner安装目录下的classes目录下。例如我的是:D:\Program Files\HP\LoadRunner\classes
5、新建Virtual User:选Java Vuser
6、生成脚本Vuser_init和vuser_end不用管在Actions里写测试脚本
7、运行脚本结果,看到如图红色部分,说明脚本运行成功了。
示例:
1、JAVA代码:
需要引用json、dom4j外部包
package com.lr.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class CloudTestScr { public static void main(String[] args) { // TODO Auto-generated method stub String get = "";String result = ""; CloudTestScr CloudTestScr = new CloudTestScr(); get = "http://was.wondershare.com/v1/?method=app.info.upgrade&app_id=com.wondershare.mobilego&client_sign={6D56BE6F-A0C1-4E81-BA91-1AD25EFA3A9E}&lang=en-US&member_id=T5CD48D5F021EA0507&sku=sku-ween×tamp=1415865275&key=47342D1BEE153385294760BDDB8A7F49&vc=5817d988bce3a3f9e509e8615d1d7cc4"; result = getHttpByUrl(get); System.out.println(result); String test1 = getJosnsString(result, "apps"); System.out.println(test1); String test2 = getJosnsarray(test1, 0); System.out.println(getJosnsString(test2, "app_id")); } public static String postHttpByUrl(String address, String param) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(address); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); // 发送请求参数 out.print(param); // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送 POST 请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输出流、输入流 finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; } public static String getHttpByUrl(String address, String param) { String res = ""; try { String urlString = address + "?" + param; URL url = new URL(urlString); java.net.HttpURLConnection conn = (java.net.HttpURLConnection) url .openConnection(); conn.setDoOutput(true); conn.setRequestMethod("GET"); BufferedReader in = new BufferedReader(new InputStreamReader( conn.getInputStream(), "UTF-8")); String line; if (in != null) { while ((line = in.readLine()) != null) { res += line; } } in.close(); conn.disconnect(); } catch (MalformedURLException e) { System.out.println("get异常"); e.printStackTrace(); } catch (IOException e) { System.out.println("get异常"); e.printStackTrace(); } // System.out.println(res); return res; } public static String getJosnsString(String s, String keyString) { String value = s, key = "", key2 = keyString; JSONObject jsonString; JSONArray jsonArray; // key值为空,回调结束 if (keyString.equals("")) { return s; } try { if (value.substring(0, 1).equals("[")) { jsonArray = new JSONArray(value); value = jsonArray.get(0).toString().trim(); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { if (value.substring(0, 1).equals("{")) { if (keyString.contains("/")) { key = keyString.substring(0, keyString.indexOf("/")); key2 = keyString.substring(keyString.indexOf("/") + 1); } else { key = keyString; key2 = keyString; } jsonString = new JSONObject(value); value = jsonString.get(key).toString().trim(); } else { System.out.println("no json"); } } catch (JSONException e) { // TODO Auto-generated catch block // e.printStackTrace(); } if (keyString.contains("/")) { return getJosnsString(value, key2); } else { return value; } } public static String getJosnsarray(String jsonString, int index) { String value = ""; JSONArray jString; try { jString = new JSONArray(jsonString); value = jString.get(index).toString(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); value = "jsonstring not found key"; } return value; } public static String getXmlString(String XmlString, String keyString) { String value = ""; Document document; try { document = DocumentHelper.parseText(XmlString); // Element root = document.getRootElement(); Element foo = null; @SuppressWarnings("unchecked") List<Element> list = document.selectNodes(keyString); // List list=root.elements("status"); for (int i = 0; i < list.size(); i++) { foo = list.get(i); value += foo.getText(); } // System.out.print(value); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } return value.trim(); } public static String getString(String httpRes, String keyString) { String fristchar = ""; fristchar = httpRes.substring(0, 1); if (fristchar.equals("<")) { return getXmlString(httpRes, keyString); } else if (fristchar.equals("{")) { // System.out.println(keyString.substring(keyString.lastIndexOf("/")+1)); return getJosnsString(httpRes, keyString.substring(keyString.lastIndexOf("/") + 1)); } return "不是合法的输入" + httpRes; } }
LR代码:
/* * LoadRunner Java script. (Build: _build_number_) * * Script Description: * */ import lrapi.lr; import com.lr.test.*; public class Actions { public int init() throws Throwable { return 0; }//end of init public int action() throws Throwable { String brand ="<brand>"; //String email ="email"; String serial_number ="<serial_number>"; String address_url ="http://192.168.9.51:8080/MobileGo/interface/index.php/v1/luckydraw?brand="+brand+"&email=jiangyfll@wondershare.cn&serial_number="+serial_number+"×tamp=144913561&vc=7e62bf6a3457d1342ef203ae688202b"; //String address_url ="http://192.168.9.51:8080/MobileGo/interface/index.php/v1/luckydraw?brand="+brand+"&email="+email+"&serial_number="+serial_number+"×tamp=144913561&vc=7e62bf6a3457d1342ef203ae688202b"; String result = ""; lr.rendezvous("ReadGO"); lr.start_transaction("luckydraw"); lr.start_sub_transaction("winning","luckydraw"); lr.start_sub_transaction("L_winning","luckydraw"); lr.start_sub_transaction("participated","luckydraw"); result = CloudTestScr.getHttpByUrl(address_url); //中大奖 if(!CloudTestScr.getString(result,"award_no").equals("12") && CloudTestScr.getString(result,"result").equals("winning")){ lr.end_transaction("luckydraw", lr.PASS); lr.end_sub_transaction("winning", lr.PASS); lr.end_sub_transaction("participated", lr.FAIL); lr.end_sub_transaction("L_winning",lr.FAIL); lr.error_message(serial_number); //幸运奖 }else if (CloudTestScr.getString(result,"award_no").equals("12") && CloudTestScr.getString(result,"result").equals("winning")){ lr.end_transaction("luckydraw", lr.PASS); lr.end_sub_transaction("winning", lr.FAIL); lr.end_sub_transaction("L_winning",lr.PASS); lr.end_sub_transaction("participated", lr.FAIL); lr.error_message(serial_number); //抽过奖 }else if(CloudTestScr.getString(result,"result").equals("participated")){ lr.end_transaction("luckydraw", lr.FAIL); lr.end_sub_transaction("winning", lr.FAIL); lr.end_sub_transaction("L_winning",lr.FAIL); lr.end_sub_transaction("participated", lr.PASS); lr.error_message(serial_number); }else{ lr.error_message(result); lr.end_transaction("luckydraw", lr.FAIL); lr.end_sub_transaction("winning", lr.FAIL); lr.end_sub_transaction("L_winning",lr.FAIL); lr.end_sub_transaction("participated", lr.FAIL); } return 0; }//end of action public int end() throws Throwable { return 0; }//end of end }
LoadRunner JAVA Vuser接口测试的更多相关文章
- 【原创】LoadRunner Java Vuser脚本的配置和调试指南
1 编写目的 本文介绍了Loadrunner多负载压力机的配置,并通过测试Java Vuser的数据库连接脚本对配置结果进行了验证,同时对配置过程中遇到的问题和解决的过程进行了记录,关于Java数据库 ...
- 【原创】LoadRunner Java Vuser开发环境配置指南
1 编写目的 本文主要介绍Java运行环境的配置,同时通过编写HelloWorld程序,讲解在LoadRunner下如何开发简单的Java Vuser脚本.关于Java语言的深入学习,大家可以参考其他 ...
- LoadRunner系列之—-03 用Java Vuser协议编写接口测试脚本
待测试接口用java语言实现,且项目中调用该接口需要用专门的jar包.这种情况可以用Java Vuser协议实现接口调用脚本,类似java代码. 代码样例如下: /* * LoadRunner Jav ...
- loadrunner之Java Vuser协议脚本编写
步骤:1.根据自己使用的lr版面选择jdk 1)LR11 1.6 32位 2)LR12 1.7 32位 2.安装好jdk,并搭建java环境变量,安装好java代码编写工具 3.在sr ...
- LR接口测试---Java Vuser之增删改查
import lrapi.lr; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...
- Loadrunner 11 中的Java Vuser
Java vuser是自定义的java虚拟用户脚本,脚本中可以使用标准的java语言. 1.安装jdk 注意,lr11最高支持jdk1.6 2.配置环境变量 3.在lr中选择java vuser协议 ...
- loadrunner11中java vuser引用jar包
1.创建工程,新建类,HelloWorld.java,代码如下: package com.liuke; public class HelloWorld { public String getHello ...
- LR之Java Vuser
虽然LR对C有较好的支持,但有时使用Java Vuser会更方便,以下描述通过LR来编写Java脚本以及调用jar包的基本步骤. 1.安装配置java环境 LR的java vuser脚本的执行依赖于 ...
- loadrunner java / JAVA_HOME / CLASSPATH / PATH
s Loadrunner 9.5/11 java vuser环境配置问题(已解决) http://blog.csdn.net/achang21/article/details/45540483 Loa ...
随机推荐
- 前端 - jsonp 跨域ajax
jsonp 跨域ajax原理: 浏览器同源策略限制 如何解决同源策略限制: 方式一: 利用创建script块,在其中执行src属性为 远程url 异域 用函数(返回值) 的形式返回参数 方式二: jq ...
- vue工具知识
1.访问数据自动格式化 Google jsonview插件(已用) 2.字体图标库. https://icomoon.io/ 上传svg可生成字体图标
- TensorFlow学习笔记之--[tf.clip_by_global_norm,tf.clip_by_value,tf.clip_by_norm等的区别]
以下这些函数可以用于解决梯度消失或梯度爆炸问题上. 1. tf.clip_by_value tf.clip_by_value( t, clip_value_min, clip_value_max, n ...
- CMakeLists 链接库相关指令
set(LSTAR_DIR "$ENV{HOME}/LStar_build") include_directories(${LSTAR_DIR}) LINK_DIRECTORIES ...
- Contains Duplicate I & III
Contains Duplicate I Given an array of integers, find if the array contains any duplicates. Your fun ...
- ARMCC和GCC编译ARM代码的软浮点和硬浮点问题 【转】
转自:http://houh-1984.blog.163.com/blog/static/31127834201211112129167/ 本文介绍了ARM代码编译时的软浮点(soft-float)和 ...
- latex公式、编号、对齐
原文地址:http://blog.csdn.net/hjq376247328/article/details/49718931 LaTeX的数学公式有两种,即行中公式和独立公式.行中公式放在正文中间, ...
- 转-OWASP CSRFGuard使用细节
版权声明:不存在一劳永逸的技术 只存在不断学习的人.本文为博主原创文章,未经博主允许不得转载.交流联系QQ:1120121072 https://blog.csdn.net/u013474568/ar ...
- Linux基础知识之bashrc和profile的用途和区别
使用终端ssh登录Linux操作系统的控制台后,会出现一个提示符号(例如:#或~),在这个提示符号之后可以输入命令,Linux根据输入的命令会做回应,这一连串的动作是由一个所谓的Shell来做处理. ...
- LuoGu P1083 借教室
题目传送门 借教室这个题有两种做法,差分+前缀和或者是线段树 线段树维护区间最小值,因为能不能借教室使用是由这几天中可用教室最少的一天决定的 其实这题是个很裸的线段树维护区间最小值,但有一点需要注意, ...