• SilkTest天龙八部系列1-初始化和构造函数


    SilkTest没有提供专门的构造函数机制,但是在类对象生成的过程中,会先初始化在类中申明的变量。我们可以在初始化该变量的时,
    调用某些函数完成对象初始化工作,看上去好像是调用了构造函数一样。不过要记住的是,这只是用来模拟构造函数而已。
    下面是一个例子:

     

    [-] winclass myClass
    [ ] boolean bConstructed = Constructor (SubStr (WindowTag(this), 2))
    [ ] string sSetMe
    [ ] integer i
    [ ]
    [-] boolean Constructor (string sConstructorData)
    [-] if (!IsSet(bConstructed))
    [ ] sSetMe = sConstructorData
    [ ] return true
    [ ]
    [-] property SetMe
    [-] string Get()
    [ ] return sSetMe
    [ ]
    [ ] // test that the myClass constructor works
    [-] testcase testClass () appstate none
    [ ] window myObject = myClass ("Set property")
    [ ] print(WindowTag(myObject))
    [ ] print ("myObject.SetMe = {myObject.SetMe}")
    [ ] print ("myObject.i = {myObject.i}")

    我们来分析一下这段代码。
    一开始声明了一个myClass类,他有三个变量,其中bConstructed的初始化调用了类的一个成员函数Constructor(),这个函数其实可以叫任何名字。所以,window myObject = myClass ("Set property")这句直接会导致成员函数Constructor()被调用。那么,为什么要给该函数传一个参数SubStr (WindowTag(this), 2)进去呢,这需要了解一下WindowTag()的意义,WindowTag()会返回对象的tag,而不管该对象是否存在。一般的Tag都是以斜线/开头的,
    window myObject = myClass ("Set property")这句的意思你就可以理解为(其实这不太容易理解,没办法,4Test当初就是这么设计的)获取对象"Set property"的Tag,它的Tag就是"/Set property"。所以在初始化bConstructed的过程中,同时初始化了成员变量bConstructed,而成员变量i并没有被初始化,所以当你运行整个脚本的时候,会得到如下的输出:

    [-] Testcase testClass - 1 error
    [ ] /Set property
    [ ] myObject.SetMe = Set property
    [ ] *** Error: Variable (i) has not been set
    [ ] Occurred in testClass at test3.t(20)

  • 相关阅读:
    DC(四)——笔试题
    验证&system verilog笔试题
    Centos和redhat6.0后关于虚拟机克隆后无法启用网卡问题
    搭建 CentOS 6 服务器(1)
    搭建 CentOS 6 服务器(16)
    搭建 CentOS 6 服务器(14)
    搭建 CentOS 6 服务器(15)
    搭建 CentOS 6 服务器
    搭建 CentOS 6 服务器(2)
    搭建 CentOS 6 服务器(3)
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3293664.html
Copyright © 2020-2023  润新知