关注于测试自动化和测试管理,我是一个永远的测试新手。

webservice压力测试实例脚本强化

上一篇 / 下一篇  2007-06-28 09:32:53

51Testing软件测试网|K#^3Dl$_V.u`9z v

webservice压力测试实例:51Testing软件测试网b A{S7_Qi

SG#~$M0M s'}0http://www.51testing.com/?6343/action_viewspace_itemid_14821.html

|0y_4eB|0d3@)v0
51Testing软件测试网u3J1U!MH!b

在增强这个脚本的时候,我遇到一个问题,就是这个接口的返回值是一个字符串:51Testing软件测试网NY)W0Zp
Response><Result><ToMobile></ToMobile><RetCode>10</RetCode><ErrCause>Web Service</ErrCause><Message>参数为空</Message></Result></Response>

{W r!d UzI O0

6xl:fk?+@]-p0 

9{a{ d!O0QB0

:j2@p'q_5VP0开始的时候我以为返回的是xml格式,我就使用lr_xml_get_values函数和lr_xml_find函数,但是都不可以使用;

6r:`_o-Uxc0

d ZU,SEM]d0后来没想出来好方法,就自己写了一个从带标签的字符串中找到标签的值的函数
)le#r7R sa3Rb0/*****************************************************51Testing软件测试网X2E l'N4J8P8vf r
*Author:flyer qi51Testing软件测试网jwp!CH'`}L
*Date:2007-6-2551Testing软件测试网9| p&e*L5[R
*MSN:qiguojie at hotmail dot com
#}f:P\{M'dk0*QQ:410225
0R}2cb5y(_!Y0******************************************************/
EQ#FITx1x#}6q0void str_get_param(char str[],char tag[],char result[])//输入字符串和标签,返回标签的values
$X`(fK} `0{
.m&I3H;ph C0 int i,j;//循环种子
#@w&A*xb:e0 int lenstr,lentag,lenres;//依次是字符串长度、标签长度和返回值的长度+1
/~xWb(B j0[0 int lb,rb;//values的左右坐标51Testing软件测试网~;Q F/Z.VkyO,^
 int Islb,Isrb;//标签字符判断正确次数51Testing软件测试网5g-WAknG+U0|.d
 lenstr = strlen(str);//get字符串长度
\_cOAnTq]0G0 lentag = strlen(tag);//get标签长度
h+I"n8X&sv0 Islb = Isrb = 1;51Testing软件测试网V5a#m)H W
 for (i=0;i<lenstr;i++)//遍历str的每个字符51Testing软件测试网1Q$v Fqh4m
 {51Testing软件测试网 Qu `N@#V
  if (str[i] == "<"[0])//如果str的当前字符是"<"51Testing软件测试网h0j!k8Ev&a6j4D
  {
i7puoZ(Op]0 //  lr_message("i=%d",i);    //debug info
5?9Hsf ]0   for (j=0;j<lentag;j++) //遍历比较tag标签长度的次数的str"<"后的字符和tag对应是否相等51Testing软件测试网6lR@c:Fwm)F1L1\?~
   {51Testing软件测试网~7fbQ:t"D
    if (str[i+1+j] == tag[j])
,].i%_,|"fd c oG0    {
$S_:S)F-n0  //   lr_message("str[i+1+j]]=%c,tag[j]=%c,i=%d,j=%d",str[i+1+j],tag[j],i,j);51Testing软件测试网9Kl-rW#K)F(e
     Islb += 1;//如果相等则正确次数+1
]J#zk:h8B0   //  lr_message("Islb=%d,lentag=%d,str[i+1+lentag]=%c",Islb,lentag,str[i+1+lentag]);
YYRwqHK} t0Sf6@z0    }51Testing软件测试网gF(r!H g8T\@kT&g
    else51Testing软件测试网[8}CKd4Uhm
    {
F0Fp4c/qe0     Islb = 1;
-ODhG#M0     break;51Testing软件测试网i)dv1l)w g Dj s
    }
4H:b.CS6^TLw0   }51Testing软件测试网IqLR/Rq)~$i"l
   if ((Islb==lentag) &&(str[i+1+lentag]==">"[0]))//如果正确次数和标签的长度相等并且标签后的字符是">"51Testing软件测试网$R%W%@*TP(e?Ou I:KsG
   {51Testing软件测试网;^ `*q6T2JHukn }
    lb = i+1+lentag+1;//确定左边界是">"后的坐标
@l x|&pvn0   // lr_message("str[i+1+j]]=%c,tag[j]=%c,i=%d,j=%d,lb=%d",str[i+1+j],tag[j],i,j,lb);
Rr-Tg\hJ;~6u]0   }else51Testing软件测试网4X7Qp,L9xBm;cN4o} {
   {51Testing软件测试网{~h)i,JM.|(b9E
    Islb=1;
)I9fF.I6Fk b_9f0   }51Testing软件测试网i\)r|W
  }51Testing软件测试网x6CRe`-obiXB
  if ((str[i]=="<"[0])&&(str[i+1]=="/"[0]))//如果str的当前字符是"<" 并且"<"后的字符是"/"51Testing软件测试网3_;ra2H;aU4ZQ
  {51Testing软件测试网J+R#qY@[U:L
   for (j=0;j<lentag;j++)//遍历比较tag标签长度的次数的str"/"后的字符和tag对应是否相等
U7N]K7]_0   {
1Q5m2[&~ TN$B:K0    if (str[i+2+j] == tag[j])51Testing软件测试网$m4mjv2W
    {
"LnPJpQ WD0    // lr_message("str[i+2+j]=%c,tag[j]=%c,i=%d,j=%d",str[i+2+j],tag[j],i,j);
?-OghHp(z5c0     Isrb += 1;//如果相等则正确次数+151Testing软件测试网+Y1Z pmn3` D,t
    }51Testing软件测试网b*| X'K&v)m
    else51Testing软件测试网S{$HH:K(nH/@
    {51Testing软件测试网R9zDS wr~
     Isrb = 1;
s6Y3UM;@,V.{0     break;
kRD|#~CU z]8?2N0    }
-Q.E Z CB5rF0   }
6Jg(|4p%d/?9Ntx;rk0   if ((Isrb == lentag) &&(str[i+1+lentag+1]==">"[0]))//如果正确次数和标签的长度相等并且标签后的字符是">"51Testing软件测试网*M'X,JL$sZ
   {
QNLFf$PO]0    rb = i;//确定右边界是"<"的坐标
%\BN.Rc us0   }else
;J\ x#v\/m*D0   {
fY'JIas$T2^z0    Isrb=0;51Testing软件测试网a4N^4I$\i6~u4^
   }
m._!f G#x^0  }51Testing软件测试网#d8i%]F;L
 }
51Testing软件测试网4D lL uXyd

51Testing软件测试网$} P"w`+Ga

51Testing软件测试网(Oy(G.]7b Byqw
 if ((lb == 0)&&(lb == rb))51Testing软件测试网zJe}4la9T_
 {
'[iXk1d ^:Al.d Y]0  lr_message("没有此标记");
6c#I,Rb&d,F(TY7f0 }else51Testing软件测试网$D-Z#sye$N1UI!O9y
 {
*CS~M iLx0  lenres = rb-lb; //获取values的长度
K){4\AM0//  lr_message("要获取的值的长度是%d",lenres);51Testing软件测试网YZ[ i9F?rt
//  lr_message("要获取的值的左边界坐标是%d,值是%c,右边界坐标是%d,前面的值是%c",lb,str[lb],rb,str[rb-1]);51Testing软件测试网l$T+q)k8v-W pfBU
  for (i=0;i<lenres;i++)//遍历values,赋值给返回值字符数组51Testing软件测试网4k0e1Ckx k-C
  {51Testing软件测试网!k!Ujt/R
//   lr_message("result[i]=%c,str[i]=%c",result[i],str[i]);
T5GD3XI C(d*O0   result[i] = str[lb+i];51Testing软件测试网:OrZo+Z*p
  }
`2e3g N)lba,R0 }
,[*|o aR:X9Q0}
r'W#eV2nI0H8~t0Action()51Testing软件测试网n0F)F:T0Lt8t
{
4`M:K'WC%s,Ek)i0 char re[1024];
:Gb/FVt0// web_reg_save_param("Retcode","LB=<RetCode>","RB=</RetCode>",LAST);
L(d'A8LGf0// web_reg_save_param("message","LB=<Message>","RB=</Message>",LAST);51Testing软件测试网^%j1`@U w)_t*Q
 web_service_call( "StepName=sendXml_101",
Dt.Vfb0  "SOAPMethod=SMSWS.SMSWebServiceSoapPort.sendXml",51Testing软件测试网Myo5iY0}8L
  "ResponseParam=response",
3i)l G,~*e P$j"}[+l0  "Service=SMSWS",
'c+UEuz)i-NM&F F;e0  "Snapshot=t1182823768.inf",51Testing软件测试网'A e|_*cY;Z` O O~
  BEGIN_ARGUMENTS,51Testing软件测试网yBm8gw`}
  "Carrier=1",
S| x2FAc(j}R}0  "Id=111111",51Testing软件测试网"?7C7S0A-V+B3mT$|3nJ
  "Password=111111",51Testing软件测试网M(k v.YY {:uFo
  "ToMobile=1111",51Testing软件测试网'Z?4d4?{%N1D3Z0~ ~
  "Message=111",51Testing软件测试网5l!I^E1T!R
  "MsgType=111",
9o V#M/I:@P'Hy0  END_ARGUMENTS,51Testing软件测试网$~^J2q nH*a8`6lf
  BEGIN_RESULT,51Testing软件测试网1?c;W$UH P(Y
  "sendXmlResult=res",
S6BmqU9I\3P0  END_RESULT,
,[S3h+[m6Rn0  LAST);

S9OvM @Q/[S J0

^V.x{ r0n ^n0 str_get_param(lr_eval_string("{res}"),"Message",re);
"k.qK%@.P:oXjD/Ze0 lr_message("result=%s",re);51Testing软件测试网-G(@@;yB v']1` y%X"v4R

51Testing软件测试网XI7LQo!`

 lr_think_time(3);

L`4RcG%H051Testing软件测试网Oe\&C)zHRo/K

 return 0;51Testing软件测试网 F:R#x`2c [mn
}

0`]'cki0

TAG: Loadrunner webservice 函数

引用 删除 fengwuqing001   /   2009-11-07 00:14:48
看你的web_service_call();
lr_xml_get_values ("XML={response}",
lr_xml_get_values ("XML={res}",
应该都可以
我的个人空间 引用 删除 selon   /   2007-06-29 13:35:00
如果你想要><RetCode>10</RetCode>中的"10"
可以这样:
                lr_output_message(lr_eval_string("{response}"));

                lr_xml_get_values("XML={response}",
              "ValueParam=Result",
              "Query=//RetCode",
              LAST);

                lr_output_message(lr_eval_string("{Result}"));
我的个人空间 引用 删除 selon   /   2007-06-28 19:33:02
lr_xml_get_values 是可以用的  哈哈
 

评分:0

我来说两句

qiguojie

qiguojie

北京测试一草根儿

日历

« 2023-06-02  
    123
45678910
11121314151617
18192021222324
252627282930 

数据统计

  • 访问量: 119229
  • 日志数: 39
  • 图片数: 1
  • 建立时间: 2007-06-05
  • 更新时间: 2011-06-29

RSS订阅

Open Toolbar