Hi, 如果有任何想法与我沟通, 请用: lifr_nj 在 msn.com

Different QTP: GUI元素库:复杂对象描述机制

上一篇 / 下一篇  2012-08-26 22:06:31 / 个人分类:QTP

GUI元素库:复杂对象描述机制

在介绍FormInput的时候,在传递Form里要设置的数据时,使用了下面一个字符串。

"Activated=True; Name=xs; Schedule=Monthly; Day=31; Hour=2; Minute=32;Day#2=31; Hour#2=2; Minute#2=32"

直觉告诉你这代表了一个Map没错,这里用到了framework里相当重要的一个基础技术,那就是复杂对象的描述技术。

对于QTP测试项目来说,传递复杂的数据结构是经常会碰到的情况。但是无论VBS还是QTP都没有提供一种方便的解决方案。

本质上,我们需要一个像JSON一样,用字符串描述复杂数据结构的技术。借鉴JSON我定义了下面的语法规则。它甚至JSON更简单,因为它只有一种数据类型“String”。 

map :
    {}
    {members}
members :
    pair
    pair; members 
pair :
    NULL # NULL means nothing. NULL will be ignored, e.g "a=1;;b=2"
    string = value #string will be trimmed
array :
    []
    [elements]
elements:
    NULL # NULL means nothing. NULL will be ignored, e.g "abc,,def"
    value
    value, elements
value :
     NULL # "" 
     string
     map
     ary
string :
    char chars
char
    normal # any char but not \ [ ] { } ; , =
    \[
    \]
    \{
    \}
    \=
    \;
    \,
    \\
    \s # (32)
    \t # (9) 
    \n # (10)
    \r # (13)

使用这个语法,能描述MapArray和他们的任意的组合。例子如下

·        map的例子是"{name=Jack; age=30}"

·        array的例子是"[Jack, Tom]"

·        组合的例子是[{name=Jack; age=30}, {name=Tom; age=20}]

·        特殊字符用'\'来转义,例子是{name=Jack\, Tom; age=30}

 

复杂对象描述机制极大的提高了代码生产率,并且让你的代码看上去很美。如果没有它,我一定会不去做任何QTP的项目,因为我忍受不了如此丑陋的代码。想象一下用Dictionary逐个赋值的方式来构造输入数据。。。


TAG:

 

评分:0

我来说两句

Open Toolbar