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

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

新一篇: SilkTest 对 Excel 表操作的两种方式

发布: 2008-5-06 17:42 | 作者: Zeng YueTian | 来源: Zeng YueTian博客 | 查看: 216次 | 进入软件测试论坛讨论

领测软件测试网
作者Zeng YueTian,转载请注明出处http://blog.csdn.net/yuetiantian/
 
开发任何软件都需要检测软件的运行情况,记录相应的日志,为以后的跟踪提供依据。作为测试软件,silktest提供了不少函数来方便测试工程师记录系统信息,尤其系统发生异常时的信息。这节就简单介绍一下silktest中常用的一些异常相关函数。
在这之前呢,让我们复习一下,silktest默认的异常处理机制:
如果一个testcase失败,例如期望值和你需要验证的表达式的值不匹配,silktest在默认情况下会调用内置的复原系统,该系统会做如下的一些事情:
结束该testcase,把错误记录到result文件中,并且将你的应用恢复到默认的基本状态,为执行下一个case做好准备。
如果我们需要处理异常的话,可以把觉得可能产生异常的语句用do…except…包起来,这样在do里面产生的异常就可以在except语句块中进行处理啦。
异常相关的函数都是以Except单词开头的,例如ExceptCall,ExceptData等等。
1.       ExceptData()
该函数返回值是最近一条异常的数据,它的类型是ANYTYPE。其实,这里面有两种情况,如果最近的这个异常是silktest自动产生的异常,那么该函数返回的是该错误的信息字符串,如果是用户自定义的异常,即用户使用raise或者reraise产生的异常,那么返回值是ANYTYPE类型。下面是silktest帮助里面提供的一个例子:
testcase ExceptDataExample ()
           do
              Verify ("xxx", "yyy")
           except
              Print (ExceptData ())
           do
              raise 1, "My error"
           except
              Print (ExceptData ())
           do
              Print ("This will cause an exception. {5/0}")
           except
              Print (ExceptData ())
       该testcase输出的结果如下:
        *** Error: Verify Failed - expected yyy, got xxx    //这是自动产生的异常,所以是字符串
        My error                                   //这是用户自定义的
        *** Error: Divide by zero                      //这是自动产生的
 
2.       ExceptLog()
该函数将把异常信息记录进result文件。它通过调用内置的LogError函数把最接近的一条异常记录进result文件。它也可以把发生异常时的调用堆栈的相关信息写入result文件。
 
3.       ExceptNum()
该函数返回最近一个异常的异常号。该异常号是一个负整形数值,为了避免冲突,一般使用正数来表示你自己抛出的异常。下面是一个使用ExceptNum函数来判断异常号的testcase:
       testcase ExceptNumExample ()
           do
              Verify ("xxx", "yyy")
           except
              Print (ExceptNum () == E_VERIFY)
           do
              raise 1, "My error"
           except
              Print (ExceptNum ())
           do
              Print ("This will cause an exception. {5/0}")
           except
              Print (ExceptNum () == E_DIVIDE_BY_ZERO)
       Testcase的执行结果如下:
        TRUE
        1
        TRUE
 
4.       ExceptCall()
该函数返回一系列导致异常发生的函数调用,也就是说它的返回值类型是LIST OF CALL。一个CALL记录有三个域,它们分别是:
描述
iLine
返回函数调用或者是异常发生的行号(Integer)
sFunction
异常发生所在的函数名(String)
sModule
包含sFunction的文件名(String)
下面是一个例子:
testcase ExceptCallsTest ()
           do
              MyFunction ()
           except
              PrintCallStack (ExceptCalls ())
        MyFunction ()
           Print ("In MyFunction")
           raise 1, "raise an exception here"
        PrintCallStack (LIST OF CALL 1cCall)
           CALL Call
           for each Call in lcCall
              Print ("MODULE: {Call.sModule}",
                     "FUNCTION: {Call.sFunction}",
                     "LINE: {Call.iLine}")
       该脚本的执行结果如下:
        In MyFunction
 
 MODULE: test.t FUNCTION: MyFunction LINE: 12
MODULE: test.t FUNCTION: main LINE: 4
 
5.       ExceptPrint()
该函数打印所有关于异常的信息到result文件。该函数将调用ExceptCalls, ExceptData, ExceptNum等函数的结果集合起来,打印到result文件。如果ExceptData没有返回值,那么将使用ExceptNum的结果代替它。
下面是一个例子:
testcase ExceptPrintExample ()
           do
              Verify ("xxx", "yyy")
           except
              ExceptPrint ()
           do
              raise 1, "My error"
           except
              ExceptPrint ()
           do
              Print ("This will cause an exception. {5/0}")
           except
              ExceptPrint ()
        该脚本的执行结果如下:
        *** Error: Verify failed - expected yyy, got xxx
        Occurred in Verify
        Called from main at test.t(3)
        My error
        Occurred in main at test.t(6)
 
 *** Error: Divide by zero
        Occurred in main at test.t(9)
 
6.       ExceptClear()
该函数清除当前异常的信息,在调用它之后,其它的异常处理函数调用时就好像没有异常发生过一样:
a.       ExceptCall将会返回一个空的列表。
b.       ExceptData将会返回NULL
c.       ExceptLog不会打印任何东西(没有任何错误被记log)
d.       ExceptNum将会返回0
e.       ExceptPrint将不会打印任何东西

延伸阅读

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

TAG: Excel silktest SilkTest SilKtest Silktest


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

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