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)
使用这个语法,能描述Map和Array,和他们的任意的组合。例子如下
· map的例子是"{name=Jack; age=30}"
· array的例子是"[Jack, Tom]"
· 组合的例子是[{name=Jack; age=30}, {name=Tom; age=20}]
· 特殊字符用'\'来转义,例子是“{name=Jack\,
Tom; age=30}”
复杂对象描述机制极大的提高了代码生产率,并且让你的代码看上去很美。如果没有它,我一定会不去做任何QTP的项目,因为我忍受不了如此丑陋的代码。想象一下用Dictionary逐个赋值的方式来构造输入数据。。。
收藏
举报
TAG: