51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3899|回复: 11
打印 上一主题 下一主题

[原创] 多个脚本怎么合并运行及vbs文件问题

[复制链接]
  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    跳转到指定楼层
    1#
    发表于 2009-4-19 16:32:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    公司程序是B/S的,功能菜单分为三级:一级模块、二级模块和三级功能。我的脚本是按三级功能编写的,每个脚本中有多个atcion。
        我是用的描述性编程,每个脚本有个vbs文件定义了该功能的browser、Frame、TreeFrame等,例如下面的定义,所有功能都是用的同样的变量名
    Dim fun_name,grid_url,form_url
    fun_name="备件材料分类"
    grid_url=".*grid_spare_base_type.jsp.*"
    form_url=".*form_spare_base_type.jsp.*"
    Set myBrower=Browser("Openurl:=.*main.jsp.*")
    Set myPage=Browser("Openurl:=.*main.jsp.*").Page("url:=.*main.jsp.*")
    Set myTreeFrame=Browser("Openurl:=.*main.jsp.*").Page("url:=.*main.jsp.*").Frame("html id:=lefttree")
    Set myDataFrame=Browser("Openurl:=.*main.jsp.*").Page("url:=.*main.jsp.*").Frame("url:="&grid_url)
    Set myFormFrame=Browser("name:="&fun_name).Page("title:="&fun_name).Frame("url:="&form_url)
           现在按单个功能编写完脚本后,运行时需要把整个模块的功能串起来一起运行。本来想用Test Batch Runner,但运行经常会发生一些莫名其妙的问题而且没有运行结果。所以我就又添加了一个新的测试脚本,在这个测试脚本中调用所有已经录好的action(一个一个添加真累)。但最后运行这个脚本时却不能运行。调试vbs中定义的变量发觉是空值。
          求助下大家我该怎么处理好。就是说是一开始脚本分割原则有问题?还是vbs设计有问题?调用脚本有问题?
         万分感谢!
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    2#
     楼主| 发表于 2009-4-19 23:16:58 | 只看该作者
    哥哥姐姐们,给前意见啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2009-4-20 09:14:33 | 只看该作者
    批量运行脚本无非就是那么几个解决方案,用Test Batch Runner,或者在一个action里调用其他已经完成的测试脚本,从你给的代码中看不出来你的设计或者是分割原则有什么问题。如果脚本运行出现问题的话,还是查一下问题的原因吧。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    4#
     楼主| 发表于 2009-4-20 09:37:25 | 只看该作者
    目前我每个脚本中有一个vbs文件,而且定义的变量名都是一样的
    这种情况下调用脚本时运行时变量的值取不到,怎么处理了?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2009-4-20 09:55:28 | 只看该作者
    既然是没用到对象库那就都写到vbs里吧,每个功能写成一个函数,把用到的变量写到函数体里(因为是局部变量重名也没关系,可以取得值的),但最好定义个class。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    6#
     楼主| 发表于 2009-4-20 10:05:13 | 只看该作者
    谢谢ls_721521指点,还没写过class了,不知道有什么作用
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2009-4-20 10:10:15 | 只看该作者
    原帖由 virgolong 于 2009-4-20 10:05 发表
    谢谢ls_721521指点,还没写过class了,不知道有什么作用

    在网上搜一下vbs类的用法,应该很多吧,
    用类应该就是为了解决变量,函数,属性等共享的问题吧。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    8#
     楼主| 发表于 2009-4-20 10:14:14 | 只看该作者
    好,搜搜学习看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2009-4-23 23:11:28 | 只看该作者
    哈哈,我是用vbs,把要运行的action都写到一个txt里面去,一个action一行,然后vbs读文件操作。。最后结果以Action名字存进result文件夹里面去,不过这个很精简,没有判断文件夹是否存在的操作。。

    Dim qtApp 'As QuickTest.Application ' Declare the Application object variable
    Dim qtTest 'As QuickTest.Test ' Declare a Test object variable
    Dim qtResultsOpt 'As QuickTest.RunResultsOptions ' Declare a Run Results Options object variable
    Set qtApp = CreateObject("QuickTest.Application") ' Create the Application object

    Dim fso, f
    Dim myReg
    Dim myString,myResult

    myString = ".*\\([^\:]+)"

    qtApp.Launch ' Start QuickTest
    qtApp.Visible = True ' Make the QuickTest application visible
    ' Set QuickTest run options
    'qtApp.Options.Run.ImageCaptureForTestResults = "OnError"
    qtApp.Options.Run.RunMode = "Fast"
    qtApp.Options.Run.ViewResults = False

    set fso = WScript.CreateObject("scripting.filesystemobject")

    Set f=fso.OpenTextFile("D:\QTPScript\testcase.txt", 1, false)
    For i = 1 To 5
            Do While f.AtEndOfStream <> True
                    retstring = f.ReadLine
                    Set myReg = New RegExp
                    myReg.Pattern = myString
                    myReg.IgnoreCase = True
                    myResult = myReg.Replace(retstring,"$1")
                    qtApp.Open retstring, True ' Open the test in read-only mode
                    ' set run settings for the test
                    Set qtTest = qtApp.Test
                    qtTest.Settings.Run.OnError = "NextStep" ' Instruct QuickTest to perform next step when error occurs
                    Set qtResultsOpt = CreateObject("QuickTest.RunResultsOptions") ' Create the Run Results Options object
                    qtResultsOpt.ResultsLocation = "C:\QTPScript\result\" & myResult & "_" & i ' Set the results location
                    qtTest.Run qtResultsOpt 'Run the test
            Loop
    Next

    f.close
    'MsgBox qtTest.LastRunResults.Status
    qtTest.Close

    'qtTest.Close ' Close the test
    Set qtResultsOpt = Nothing ' Release the Run Results Options object
    Set qtTest = Nothing ' Release the Test object
    Set qtApp = Nothing ' Release the Application object
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2009-4-23 23:13:59 | 只看该作者
    我发觉我的for循环写错位置了。。Next应该写在f。close后面,运行脚本5次
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    11#
     楼主| 发表于 2009-4-23 23:31:45 | 只看该作者
    真的要非常感谢风雪夜归人,这么晚还在回帖,又学到东西了。
    前些天看贴还奇怪把QTP当作个对象干什么用了,原来可以这样用的。可不可以把你的脚本给个我看看啊,好好学习下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    12#
     楼主| 发表于 2009-4-23 23:35:09 | 只看该作者
    另外,对于测试脚本加载vbs,我还有个问题
    test1测试脚本有vbs文件,定义了变量s,赋值1;test2测试脚本有vbs文件,定义了变量s,赋值2
    我在测试时新建一个脚本,调用test1的,再调用test2,发觉test1、test2定义的变量都没生效,值都是空的。
    这种调用脚本时,vbs文件怎么处理啊
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-25 20:10 , Processed in 0.086788 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表