wonew1228 发表于 2006-12-28 10:33:14

请教高手!调用函数时,怎么返回多个值?

public function fun1(x,y)
               
{       
               static x;
               static y;       
               static jia;
               static jian;
        static cheng;
        static chu;
        jia= x + y;
        jian =x-y;
        cheng = x *y;
        chu = x/y;
}
脚本2;
call " ..\\xxxx\\xxxx"();
function fun1(10,2);
call_close" ..\\xxxx\\xxxx"();

请教各位,我怎么在 脚本2中一次得到jia; jian; cheng; chu;四个值!谢谢

[ 本帖最后由 wonew1228 于 2006-12-28 15:30 编辑 ]

wonew1228 发表于 2006-12-28 14:55:33

怎么没人说话,高手帮帮忙!小子在此谢谢各位了!

shiwomyw 发表于 2006-12-28 17:19:46

解决方法一:脚本传参
在函数脚本中,如果是7.0,在WR中的file-->test properties中的parameters页签下add加入x,y;然后再把脚本中的定义的变量注释掉,不需要再声明。这样就可以了。
同时说明一下,在主脚本中调用函数脚本时,可以直接给脚本传参,如call " ..\\xxxx\\xxxx"(10,2);
#public function fun1(x,y)写错了需要更正
public function fun1(in x, in y ,out jia, out jian, out cheng, out chu)
               
{      
       #static x;
       #static y;      
       #static jia;
       #static jian;
       # static cheng;
       # static chu;
      jia= x + y;
      jian =x-y;
      cheng = x *y;
      chu = x/y;
}
脚本2;
call " ..\\xxxx\\xxxx"();
function fun1(10,2);
report_msg(jia);
report_msg(jian);
report_msg(cheng);
report_msg(chu);
call_close" ..\\xxxx\\xxxx"();


解决方法二:使用编译模块
把函数脚本定义成编译模块complied module,然后在主脚本中加载编译模块load("脚本1");然后就可以直接调用函数fun1(10,2,jia,jian,cheng,chu)(传出参数可以不写);函数调用完后,unload("脚本1")一下。

[ 本帖最后由 shiwomyw 于 2006-12-28 19:10 编辑 ]

wonew1228 发表于 2006-12-28 17:53:28

public function fun1(x,y,a)
               
{   
               
      static jia;
   static jian;
      static cheng;
      static chu;
      jia= x + y;
      jian =x-y;
      cheng = x *y;
      chu = x/y;
                a=jia;

                #a=jia&"#"&jian &"#"&cheng&"#"&chu;
                return a;
}
脚本1:
public shuzu[]={" "," "," "," "};
call "D:\\xyb\\winrunner\\sedscs\\hanshufanhuiduozhi"();
aa=fun1(10,2,shuzu);

report_msg(aa);
call_close "D:\\xyb\\winrunner\\sedscs\\hanshufanhuiduozhi"();
我想用参数传值,不知道这样 行不?应该怎样修改谢谢

[ 本帖最后由 wonew1228 于 2006-12-28 17:59 编辑 ]

wonew1228 发表于 2006-12-28 18:06:29

我用了你的第一中方法后还是不行!提示函数中的 jia等,没有声明,你给看看!

同时也给看看#4,错在 那里?

[ 本帖最后由 wonew1228 于 2006-12-28 18:08 编辑 ]

shiwomyw 发表于 2006-12-28 19:01:22

不好意思,上一贴写错了。public function FUN1(x,y)这样定义是不正确的,要把参数写全,应该为public function fun1(in x, in y , out jia, out jian, out cheng, out chu).我用的是WR7.0,在test peroperties中设置参数时只能设传入参数,不能设传出参数。8.2的可以设置传入与传出,像你上图所写也可以。

[ 本帖最后由 shiwomyw 于 2006-12-28 19:02 编辑 ]

wonew1228 发表于 2006-12-29 09:39:08

shiwomyw :
你好!用了你的方法一:的到的结果是空!
public function fun1(in x, in y ,out jia, out jian, out cheng, out chu)
               
{      
       #static x;
       #static y;      
       #static jia;
       #static jian;
       # static cheng;
       # static chu;
      jia= x + y;
      jian =x-y;
      cheng = x *y;
      chu = x/y;
}
脚本2;
call " ..\\xxxx\\xxxx"();
fun1(10,2);
report_msg(jia);
report_msg(jian);
report_msg(cheng);
report_msg(chu);
call_close" ..\\xxxx\\xxxx"();

还有一个,能不能把方法二,写一个例子看一下,谢谢!

wonew1228 发表于 2006-12-29 09:39:15

shiwomyw :
你好!用了你的方法一:的到的结果是空!
public function fun1(in x, in y ,out jia, out jian, out cheng, out chu)
               
{      
       #static x;
       #static y;      
       #static jia;
       #static jian;
       # static cheng;
       # static chu;
      jia= x + y;
      jian =x-y;
      cheng = x *y;
      chu = x/y;
}
脚本2;
call " ..\\xxxx\\xxxx"();
fun1(10,2);
report_msg(jia);
report_msg(jian);
report_msg(cheng);
report_msg(chu);
call_close" ..\\xxxx\\xxxx"();

还有一个,能不能把方法二,写一个例子看一下,谢谢!

shiwomyw 发表于 2006-12-29 14:15:28

方法一:在调用函数脚本时,要把参数写完整。在主脚本中这样写
call"\\xxxx\\xxxx"();
fun1(10,2,jia,jian,cheng,chu);
report_msg(jia);
report_msg(jian);
report_msg(cheng);
report_msg(chu);
方法二:调用编译模块
函数脚本存放在e:\\自动化测试\\练习\\lib”.脚本内容如下
public function fun1(in x,in y,out jia,out jian, out cheng,out chu)
               
{      

      jia= x + y;
      jian =x-y;
      cheng = x *y;
      chu = x/y;

}
在test properties中设置如图,test type: complied moudle。
主脚本内容如下:
load("E:\\\\自动化测试\\\\练习\\\\lib");
# call "E:\\\\自动化测试\\\\练习\\\\122801 "();
fun1(10,2,jia,jian,cheng,chu);
report_msg(jia);
report_msg(jian);
report_msg(cheng);
report_msg(chu);

[ 本帖最后由 shiwomyw 于 2006-12-29 14:20 编辑 ]

wonew1228 发表于 2006-12-29 18:24:45

shiwomyw :虽然对说了无数次的谢谢!但此时此刻我对你想说还是一句:谢谢!
祝大家元旦快乐!
页: [1]
查看完整版本: 请教高手!调用函数时,怎么返回多个值?