博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用LR编写HTTP协议Json报文格式接口脚本实战
阅读量:7117 次
发布时间:2019-06-28

本文共 5778 字,大约阅读时间需要 19 分钟。

最近在做HTTP协议接口压测时,遇到一些编写脚本方面的问题,在这里总结记录下,以便以后温习,也希望能帮助到和我有同样困惑的朋友吧。

//实战代码如下所示: Action(){   lr_start_transaction("事物");// 断言内容:processcode":"0000","processdes:"处理成功"   web_reg_save_param("processcode",                      "NotFound=warning",                      "LB=processcode\":\"",                      "RB=\",\"processdes",                      "Ord=1",                      "Search=Body",                      LAST);  web_reg_save_param("processdes",                  "NotFound=warning",                  "LB=processdes\":\"",                  "RB=\",\"checkresult",                  "Ord=1",                  "Search=Body",                  LAST);   //接口1:发送指定key:value参数的json报文    web_submit_data("request",                   "Action=http://IP:port/sss/idCardCheck11",                   "Method=POST",                   "Mode=HTTP",                   "RecContentType=application/json",                    ITEMDATA,                    "Name=msgbody", "Value={\"app_sign\":\"287cca63e9316c031\",\"businesscode\":\"05\","                     "\"note\":\"\",\"brnchcd\":\"4001\",\"b64pic\":\"\",\"inputtype\":\"11\",\"teller\":\"2666\","                     "\"idcardno\":\"139891119211X\",\"name\":\"user\",\"wthrespic\":\"1\",\"app_id\":null,"                     "\"bankcode\":\"31100396\",\"timestamp\":\"1536118078193\"}", ENDITEM,                    LAST);                        //接口2:发送json格式报文    web_custom_request("request",                  "Url=http://IP:port/sss/idCardCheck11",                  "Method=POST",                  "Mode=HTTP",                  "EncType=application/json",                  "RecContentType=application/json",                  "Body={\"app_sign\":\"287cca63e9316c031\",\"businesscode\":\"05\",\"note\":\"\",\"brnchcd\":\"4001\","                   "\"b64pic\":\"\",\"inputtype\":\"11\",\"teller\":\"2666\",\"idcardno\":\"139891119211X\","\"name\":"                   "\"user\",\"wthrespic\":\"1\",\"app_id\":null,\"bankcode\":\"31100396\",\"timestamp\":\"1536118078193\"}",                   LAST); //响应报文key值和预期结果比较,如果等于0则请求处理成功     if(strcmp(lr_eval_string("{processcode}"),"0000") == 0){        lr_end_transaction("事物", LR_PASS);     }else{        lr_end_transaction("事物", LR_FAIL);        //事物失败后打印processdes字段的值,也就是错误信息,但是LR打印出来的中文出现乱码,所以这里做了转码的操作        lr_convert_string_encoding(lr_eval_string("{processdes}"),LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"resultMsg");        //解码后返回单笔核对请求处理成功        lr_error_message("错误信息:%s",lr_eval_string("{resultMsg}"));      }  // lr_end_transaction("事物",LR_AUTO);    return 0;}

以下是web_submit_data()函数 API示例代码:

从示例可以看到发送的是name,value对,提交表单的形式,但实际Value值也可能存在json数组,xml等形式。

// web_submit_data() API示例  web_submit_data("default.aspx",                "Action=http://lazarus/flightnet/default.aspx",                "Method=POST",                "TargetFrame=",                "RecContentType=text/html",                "Referer=http://lazarus/flightnet/",                "Snapshot=t7.inf",                "Mode=HTML",                ITEMDATA,                "Name=grpType", "Value=radRoundtrip", ENDITEM,                "Name=lstDepartingCity", "Value=DEN", ENDITEM,                "Name=lstDestinationCity", "Value=LAX", ENDITEM,                "Name=btnAvailableFlights", "Value=Next >", ENDITEM,            LAST );

接口请求报文如下:

msgbody:{app_sign:287cca63e9316c031,businesscode:05,note:,brnchcd:4001,b64pic:,inputtype:11,teller:2666,idcardno:139891119211X,name:user,wthrespic:1,app_id:null,bankcode:31100396,timestamp:1536118078193}

问题描述:

往常使用LR编写处理HTTP接口脚本,惯用的函数是web自定义请求函数 web_custom_request(),使用接口测试工具postman请求成功后就直接编写脚本,尝试了几种组body的方法均返回请求方法格式出错或者直接请求失败,尝试请求方法如下所示:

web_custom_request("request",                  "Url=http://10.148.0.161:1111/check/idCardCheck",                  "Method=POST",                  "Mode=HTTP",                  "EncType=application/json",                  "RecContentType=application/json",                  "Body={msgbody:{\"app_sign\":\"287cca63e9316c031\",\"businesscode\":\"05\",\"note\":\"\",\"brnchcd\":\"4001\","                   "\"b64pic\":\"\",\"inputtype\":\"11\",\"teller\":\"2666\",\"idcardno\":\"139891119211X\","\"name\":"                   "\"user\",\"wthrespic\":\"1\",\"app_id\":null,\"bankcode\":\"31100396\",\"timestamp\":\"1536118078193\"}}",                   LAST);            web_custom_request("request",                  "Url=http://10.148.0.161:1111/check/idCardCheck",                  "Method=POST",                  "Mode=HTTP",                  "EncType=application/json",                  "RecContentType=application/json",                  "Body={\"msgbody\":{\"app_sign\":\"287cca63e9316c031\",\"businesscode\":\"05\",\"note\":\"\",\"brnchcd\":\"4001\","                   "\"b64pic\":\"\",\"inputtype\":\"11\",\"teller\":\"2666\",\"idcardno\":\"139891119211X\","\"name\":"                   "\"user\",\"wthrespic\":\"1\",\"app_id\":null,\"bankcode\":\"31100396\",\"timestamp\":\"1536118078193\"}}",                   LAST);             web_custom_request("request",                  "Url=http://10.148.0.161:1111/check/idCardCheck",                  "Method=POST",                  "Mode=HTTP",                  "EncType=application/json",                  "RecContentType=application/json",                  "Body=msgbody:{\"app_sign\":\"287cca63e9316c031\",\"businesscode\":\"05\",\"note\":\"\",\"brnchcd\":\"4001\","                   "\"b64pic\":\"\",\"inputtype\":\"11\",\"teller\":\"2666\",\"idcardno\":\"139891119211X\","\"name\":"                   "\"user\",\"wthrespic\":\"1\",\"app_id\":null,\"bankcode\":\"31100396\",\"timestamp\":\"1536118078193\"}",                   LAST);

结论:如果提供的报文是key:value格式的就使用web_submit_data()函数,反之可选择使用web_custom_request()函数,如以上内容表述或总结后期会不断完善。

 

转载于:https://www.cnblogs.com/ssj0723/p/9629503.html

你可能感兴趣的文章
一步步学会用docker部署应用(nodejs版)
查看>>
分享10个免费H5模版(主题)资源网站
查看>>
RabbitMQ预研
查看>>
机器学习之分类结果的评价
查看>>
理解五个基本概念,让你更像机器学习专家
查看>>
你应该知道的数据库数据类型及其设计原则
查看>>
解决vue报错Failed to mount component
查看>>
[LeetCode] 124. Binary Tree Maximum Path Sum
查看>>
活学活用! 用Local Storage实现多人聊天室
查看>>
一次爬虫实践记录
查看>>
炫酷粒子表白,双十一脱单靠它了!
查看>>
mysql锁以及实践总结
查看>>
react 移动端 兼容性问题和一些小细节
查看>>
HTTP 详解(一)
查看>>
【刷算法】LeetCode.155-最小栈
查看>>
Apache Trafodion技术架构介绍
查看>>
【工具】MongoDB 与可视化工具 adminMongo 的安装、启动与连接
查看>>
Javascript--常用方法
查看>>
Swoft之服务注册发现Consul服务器配置
查看>>
[译]迁移到新的 React Context Api
查看>>