接口压测之——put方法2
2015-08-21 10:07
369 查看
由于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 }
相关文章推荐
- Hdu 5407 CRB and Candies (找规律)
- Java之String,StringBuffer,StringBuilder类
- hdu 1863 畅通工程 kruskal || prim
- Spring注解@Component和@resource的使用
- [C++]Rotate Array 旋转数组
- vc mfc 图片存储mssql数据库中及显示
- 对于数据库值为 1 2 3 在页面上需要根据值判断显示登陆账号类型
- codeforces 45G Prime Problem
- Paths on a Grid(简单组合数学)
- 时间序列数据库的秘密(2)——索引
- 一培训机构设计的学习android课程内容:供大家参考
- Paths on a Grid(简单组合数学)
- [置顶] Android开发之动态库调用
- 隐马尔可夫模型的forward算法的c实现
- xml理论学习总结
- 数据挖掘该怎样的学习路线?
- 详解Hibernate中的NoSession问题
- SQL专场
- 如何删掉win8.1我的计算机里的文件夹(by 星空武哥)
- 如何教女朋友一起编程