zoukankan      html  css  js  c++  java
  • 使用LR编写HTTP协议Json报文格式接口脚本实战

    最近在做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()函数,如以上内容表述或总结后期会不断完善。

  • 相关阅读:
    C++中Map的使用 (个人简单的对于String的使用)
    具体数学二项式至生成函数章-----致敬Kunth
    C++中String的使用
    C++中Set的使用
    费马小定理,欧拉函数
    数论---同余法则定理
    灵活利用单链表,顺带一提可持久化链表。
    第2章 数字之魅——数字中的技巧
    Mail.Ru Cup 2018 Round 1
    Lyft Level 5 Challenge 2018
  • 原文地址:https://www.cnblogs.com/ssj0723/p/9629503.html
Copyright © 2011-2022 走看看