接口压测之——put方法2

由于LR不支持PUT方式,所以只好通过java Vuser写压测脚本,使用httpclient jar包,我使用的httpclient4.5版本。

/*
 * LoadRunner Java script. (Build: _build_number_)
 *
 * Script Description:
 *
 */

import lrapi.lr;
import lrapi.web; 

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import java.util.Date;
import java.text.SimpleDateFormat;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class Actions
{

	public int init() throws Throwable {
		return 0;
	}//end of init

	public int action() throws Throwable {

		HttpClient client = HttpClients.createDefault();
		HttpPut put = new HttpPut("http://xxxxcart.beta1.fn/xxxCart/rest/v1/cart/");

	//	lr.save_string(lr.eval_string("<owner>"), "user"); 

	//      lr.output_message("The value of str = " + lr.eval_string("<user>") + "."); 

		String sourceStr = lr.eval_string("<name5529206105542>");
		String sourceArray[] = sourceStr.split(",");

		List<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();
		parameters.add(new BasicNameValuePair("owner",sourceArray[0]));

		lr.save_string(sourceArray[0], "user"); 

	//	parameters.add(new BasicNameValuePair("owner","name5529206105542"));

		for ( int i=2;i<sourceArray.length;i++ ) {
		    lr.save_string(sourceArray[i],"id1");
		//  lr.output_message("id1 value is "+lr.eval_string("<id1>"));

		    parameters.add(new BasicNameValuePair("area_seq","CS000016"));
		    parameters.add(new BasicNameValuePair("is_login","1"));
		    parameters.add(new BasicNameValuePair("mem_type","0"));
		//  parameters.add(new BasicNameValuePair("cart_detail_list","[{\"cart_detail_id\":\"715\",\"qty\":2,\"selected\":true,\"campaign_seq\":\"\"}]"));
		    parameters.add(new BasicNameValuePair("cart_detail_list","[{\"cart_detail_id\":\"<id1>\",\"qty\":<qty>,\"selected\":true,\"campaign_seq\":\"\"}]"));

/*
		List<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();
		parameters.add(new BasicNameValuePair("owner","<user>"));
		parameters.add(new BasicNameValuePair("area_seq","CS000016"));
		parameters.add(new BasicNameValuePair("is_login","1"));
		parameters.add(new BasicNameValuePair("mem_type","0"));
		parameters.add(new BasicNameValuePair("cart_detail_list","[{\"cart_detail_id\":\"<id>\",\"qty\":2,\"selected\":true,\"campaign_seq\":\"\"}]"));
*/

           //         System.out.println("parameters is " + parameters );

		    try {
			    put.setEntity(new UrlEncodedFormEntity(parameters,"UTF-8"));

			    lr.start_transaction("t1");
			    HttpResponse response = client.execute(put);
			    HttpEntity entity = response.getEntity();

			    String result = EntityUtils.toString(entity, "UTF-8");
		//	    System.out.println(result);
			    boolean b = result.contains("\"code\":1");
		//	    System.out.println(b);

			    if ( b == true ) {
			    //	System.out.println("为真");
				    lr.end_transaction("t1", lr.PASS);
			    } else {
		//		System.out.println("为假");
			    //	lr.end_transaction("t1", lr.FAIL);
				FileWriter writer = null;
				try {
				    Date now = new Date();
				    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//可以方便地修改日期格式 

				    String hehe = dateFormat.format( now );

				    writer = new FileWriter("e://codeerror.txt", true);
			       //   writer.write(result);
				    BufferedWriter buffer = new BufferedWriter(writer);
				    buffer.write(hehe);
				    buffer.write(lr.eval_string("<user>"));
				    buffer.write(result);

				    buffer.newLine();
				    buffer.flush();

				    buffer.close();
				} catch (IOException e) {
				    e.printStackTrace();
				} finally {
				    try {
					    if(writer != null){
						    writer.close();
					    }
				    } catch (IOException e) {
					e.printStackTrace();
				    }
				}
			    }

		    } catch (UnsupportedEncodingException e) {
			    e.printStackTrace();
		    } catch (ClientProtocolException e) {
			    // TODO Auto-generated catch block
			    e.printStackTrace();
		    } catch (IOException e) {
			    // TODO Auto-generated catch block
			    e.printStackTrace();
		    }
		}//end of for

		return 0;
	}//end of action

	public int end() throws Throwable {
		return 0;
	}//end of end
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-27 23:13:46

接口压测之——put方法2的相关文章

接口压测之——put方法1

接口的方法使用PUT 一.使用Postman发送请求,能够成功发送,如下图: 二.使用JMETER就发送,如下图: PUT data中的数据为空 三.LoadRunner不支持put方法. 预知故事情形请听下回分解. 版权声明:本文为博主原创文章,未经博主允许不得转载.

接口压测笔记(二)

隔了很久再来写第二篇随笔,这篇文章的内容是关于简单接口压测的记录已经报告. 上篇记录了Jmeter的简单操作已经接口的压测,这篇是对接口压测做一些记录,我目前完成公司的任务所记录下的表格. 步骤: 1.先打开我们的Jmeter压测工具,建立一个新的线程组 2.在线程组下面建立一个新的Http请求(Sampler中),以及察看结果树(看请求是否对错,以及访问接口之后返回的信息).聚合报告(吞吐率等相关数据的记录).图形报告(接口在访问过程的图形,不过这边可以不看,问题不大) 3.Http请求的地址

JMETER获取短信验证码接口压测

主要学习的内容包括发送HTTP请求.HTTP信息头管理器.HTTP cookies管理器.用户定义的变量.响应断言.CSV数据文件设置的使用. 一.测试相关网站及接口说明: 提供的测试网址为:http://www.qk365.com/security/register 使用Chrome浏览器,先将浏览器的cookies缓存清空. 清空后,打开待测试的网址,按F12键,输入要注册的手机号码,如“18300987622”,点击“发送验证码”,可以看到请求的接口为:http://www.qk365.c

Dubbo接口压测

在每年的双十一大促之前,除了全链路压测,还需要各个业务方对自己业务提供的核心接口进行单接口压测,以评判系统的稳定性和承压能力. 一.准备工作 环境准备:确保应用性能环境(perf)正常可用 压测接口梳理:通过 ops平台 - 应用 - 监控模块 [示例] 获取频繁访问的接口,确定需要压测的接口列表 测试数据准备:根据接口请求的参数列表,从qa库中捞取需要的测试数据,导出到csv备用 二.压测脚本编写(jmeter版本3.2) A: Nova或Dubbo接口 这类接口的压测需要借助jmeter的高

如何用fiddler 做接口压测【转】

一.fiddler接口压测 1)浏览器打开需要测试的url,可以看到url被fiddler拦截到,并出现在列表中. 2)在拦截到的url上点击鼠标右键,->replay -> shift+reissue request 设置访问次数,比如100 二.Composer简介 点开右侧Composer区域,可以看到如下界面,就是测试接口的界面了 1.请求方式:点开可以勾选请求协议是get.post等 2.url地址栏:输入请求的url地址 3.请求头:第三块区域可以输入请求头信息 4.请求body:

接口压测工具--jmeter

jmeter jmeter是apache公司基于java开发的一款开源压力测试工具,是一个较轻量的测试工具.运行需要安装jdk环境,jmeter为免安装软件,      解压后直接运行jmeter执行脚本即可.它也是跨平台的,支持在windows.linux.macos上使用. 1 jmeter-http接口脚本基本流程 添加线程组 添加http请求 在http请求中写入url.路径.请求方式.参数 添加查看结果树 调用接口.查看返回值 具体操作见下图示: 有时还需添加cookie和header

Jmeter接口压测快速入门

[TOC] Jmeter简介 Jmeter是Apache开源的一个使用纯Java编写的压力测试工具,它最初是为测试web应用程序而设计的,但后来扩展到了其他测试功能.例如,可用于测试静态和动态资源以及web动态应用程序的性能等.Jmeter可以用来模拟对服务器.服务器组.网络或对象上的重负载,以测试其强度或分析服务在不同负载类型下的总体性能. 如今Jmeter是一个主流的.功能完善且强大的压测工具,由于是使用Java编写的,所以具有跨平台特性,可以运行在Windows.Mac.Linux等操作系

locust接口压测

前言: locust是完全基于python,是一个简单易用的分布式负载测试工具 Locust特性 使用Python编写模拟用户行为的代码,无需繁琐的配置 分布式可扩展,能够支持上百万用户 自带Web界面 不仅能测试web系统,也可以测试其它 Locust思想 在测试过程中,一群用户将访问你的网站.每个用户的行为由你编写的Python代码定义,同时可以从Web界面中实时观察到用户的行为. Locust完全是事件驱动的,因此在单台机器上能够支持几千并发用户访问.与其它许多基于事件的应用相比,Locu

【接口】接口压测性能分析及调优建议

常见的互联网架构中,一般都能看到spring+mybatis+mysql+redis搭配的身影,在我所服务的公司亦是如此.一般来说,应用内部的接口都是直接调用的,所谓的面向接口编程,应用间的调用直接调或者通过类似dubbo之类的服务框架来执行,数据格式往往采用json,即统一也方便各数据间做转换和取值,缓存一般使用redis或memcached,存储一些对象或json格式的字符串.对外提供的接口,一般都需要进行压力测试,以便估算其性能,并为后续的调优提供指导方向,以下接口便是在压测过程中出现的各