• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件测试工具Winrunner中的脚本和函数调用

发布: 2010-1-19 16:03 | 作者: 网络转载 | 来源: 领测软件测试 | 查看: 48次 | 进入软件测试论坛讨论

领测软件测试网 执行脚本可以正确得到数值,注意使用函数的时候一定要把函数的所有参数都写出,不管是传入的还是传出的。如果没有写传出参数,如主脚本中只是re1 = notepad(15);re2 = result1;re3 = result2;则result1和result2在主脚本中是无法得到数值的(在Function子脚本中可以有值)。切记!!

 

        第四种情况:调用另一个脚本,给这个脚本传递参数,并根据参数判断执行脚本中的函数,需要函数的返回值

        这种情况比较复杂,脚本参数和函数参数都使用到了。结合上面介绍的方法,我们先建立一个子脚本notepadinput,在脚本属性中建立两个input参数:mode(用来判断执行脚本中的哪个函数),notepadinput(用来给脚本中的函数传参),编写语句如下:

        function notepad1(in notepadinput)           #第一个函数,notepadinput是脚本中定义的传入参数
        {
          static text;
        # 无标题 - 记事本
         set_window ("无标题 - 记事本", 1);
         edit_set_insert_pos ("Edit", 0, 0);
         obj_type ("Edit",notepadinput);
            edit_get_text("Edit",text);
         return text;                 #第一个函数的函数返回值
        }
        function notepad2(in notepadinput)         #第二个函数,notepadinput是脚本中定义的传入参数
        {
         static text;
        # 无标题 - 记事本
         set_window ("无标题 - 记事本", 3);
         edit_set_insert_pos ("Edit", 0, 0);
         obj_type ("Edit",notepadinput);
         edit_get_text("Edit", text);
         return text;        #第二个函数的函数返回值
        }
        switch(mode)         #mode是脚本定义的传入参数,用来判断运行哪个函数
        {
         case 0:
         {
          re = notepad1(notepadinput);   #函数在本脚本内,可以直接使用
          treturn re;                                      #将函数的返回值作为脚本返回值
          break;                                             #跳出switch
         }
         case 1:
         {
          re = notepad2(notepadinput);
          treturn re;
          break;
         }
        }

        ###########################################################################

        主脚本main修改如下:

        GUI_close_all();
        if (GUI_load(".\\notepad.gui")!=0)
        {
         report_msg("gui load error");
        }
        else
        {
         report_msg("gui load ok");
        }
         if (invoke_application("c:\\windows\\system32\\notepad.exe","","",SW_SHOW)!=0)
         {
          report_msg("notepad error");
         }
         else
         {
          report_msg("notepad ok");
         }
        re1 = call ".\\notepadinput"("8",0);       #调用脚本,传递notepadinput和mode,这个调用将执行子脚本的第一个函数
        pause (re1);           #re1得到的是子脚本的脚本返回值,即treturn的值
        re2 = call ".\\notepadinput"("5",1);      #调用脚本,传递参数,执行第二个函数
        pause (re2);

        ###########################################################################

        执行脚本可以看到我们从主脚本中设置不同的参数将会影响到子脚本执行哪个函数,这对于实际操作中也是很常见的,但逻辑稍显混乱,维护起来有些麻烦。

        WR的脚本和函数调用丰富多样,既可以脚本传参也可以脚本中的函数传参,对于学者来说很易混乱。我将常见的几种调用方法总结如上,算是使用上的归类,也许存在一些错误,希望能得到高手们的指点。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

33/3<123

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网