FWScript 数据源
数据源数值类型是FWScript独具特色的一种数据类型,数据源是用于提供数据集的表达方式,当需要使用不同的数据组合进行自动化执行的时候,可以将多个数据组合集中起来,赋值给数据源变量,然后让程序进行循环执行,每次执行时选取一组数据。数据源属于变量的一种类型,主要用于在测试过程中给各个变量循环赋值,从而达到使用数据驱动测试的目的
数据源相当于一个矩阵,包含行与列,含义为List<object[]>,采用如下方式赋值:
- 变量赋值
- 获取元素
- 文件格式
- 数组
数据源赋值
赋值 | 描述 |
---|---|
利用控件生成 $var = $Elements(n1, n2, n3) | $Elements为控件元素变量或元素集合变量,n1等为属性名称,这个语句的作用是将一个元素或一系列元素的属性值取出,形成数据源。注意,数据源变量的属性名称一直保存在里面,此处的n1,n2,n3直接是名字,不用引号"。 |
定义一个数据源 $var = [n1, n2, n3] | 直接定义一个数据源变量,表头名字为n1,n2,n3。此处的n1,n2,n3直接是名字,不用引号"。 |
添加到已有的数据源 $var < $value | 如果$value为数据源,则将数据合并到$var中,如果是元素或元素表,则按照$var中保存的属性名称取出属性值,然后添加到$var中 |
定义一列数据 $var = ^(d1,d2,d3) | 将$var赋值为包含一列的数据源(也就是说只有一个属性) |
添加一行数据 $var < ^(d1,d2,d3) | 将(d1,d2,d3)作为一行添加到$var中(注意与上面完全不同) |
从字符串中进行定义 $var[] = '[["n1","n2","n3"],[1,2,3],[4,5,6]]' | 使用json格式的字符串,定义一个数据源,注意此处可以是一个计算结果为字符串的表达式 |
从文件中导入 $var = ^filename | 依据filename的类型将数据源赋值到$var中 |
从文件中添加 $var < ^filename | 依据filename的类型将数据源添加到$var中 |
采用“$var = $Elements(n1, n2, n3)”或者读入文件方式创建的数据源,一般包含有“表头”,即针对每一列都取了一个名字。
获取数据源中元素的值
在数据源循环中,每次循环从数据源中取出一行,分别复制给数据源的表头中描述的字符串代表的变量中,例如,如果数据源表头的字符串数组为[“name”, “id”, “classname”],则在循环体中可以使用的变量为:$name, $id, $classname。如果数据源的表头没有字符串,则相应的值依次使用9个固定数字变量:$1,$2,...,$9(注意从1开始)
数据源的行和列都是从0开始计数 (反复修改与挣扎了好久:(,因为grid是从0开始,而Excel的导入则从1开始。)
引用 | 描述 |
---|---|
$var.name | 如果没有[],则为取第1行中 name 的值,如:$list.name |
$var[row].name | 取到第 row 行中 name 列的值, 如:$list[2].name |
$var.column | 如果没有[],则为取第1行中第 column 列的值,如:$list.1 |
$var[row].column | 取到第 row 行中第 column 列的值,如:$list[1].2 |
$var[row,colum] | 取到第 row 行中第 column 列的值,如:$list[1,2] |
loop $list show $n1 endloop | 通过数据源循环,每次从数据源中取出一行的值,赋给表头字符串定义的变量名,同时也可以使用$1,$2获取。 |
!< $var !< '[["n1","n2"],[1,2]]' loaddata $var | 通过命令loaddata,将数据源中表头所代表的名称作为变量名,并将第一行的数据分别赋值给这些变量。$var的类型如果是数据源,则直接将表头的变量赋值,如果是个字符串,则先解析成数据源,再生成变量 |
无论有没有“表头”,都可以通过数字属性来取值。在数据源中,行和列都是从0开始。
实例
$var3=^(1,2,3) while $var3 @=$1 show endwhile
$var4<^(1,2,3) while $var4 @=$1+" "+$2+" "+$3 show endwhile
文件读写
针对文件的导入目前实现了Json与excel格式文件,采用的数据类型为List<object[]>,第一行为表头,将来会扩展能读取csv文件,甚至是个SQL语句。
使用如下方式从文件中读取数据源:$list = ^filename
使用如下方式将数据源写到文件中: $list > filename
注意: 如果是从json格式文件导入,该json格式必须为List
数组
在FWScript中,数组的概念比较像JavaScript中的定义,数组单元是一个对象,同一个数组中,单元的值可以是方文脚本中的任何支持的数组类型,如一个字符串,一个数组,甚至一个控件元素。 FWScript利用一种特殊的数据源格式来实现数组的功能,也可以当作数据源处理。 注意:FWScript中的数组成员的类型是可以变化的,与Python中的list类似。
功能 | 描述 |
---|---|
数组的声明 $var = [10] $var = [$len] | 创建一个对象数组,长度为10; 也可以通过变量$len动态确定数组的长度 |
数组的赋值 $var[0]= expr. $var[$index]=expr. | 将表达式的值赋给下标为0的数组单元,下标也可以由一个变量指定,可以为负数,表示倒着数的位置 |
数组值的获取 $var = "it is " + $array[1] $var = "it is " + $array[$len] | 使用$array[1] 或 $array[$index] 获取数组的值,可以出现在表达式的任何地方,下标可以为负数,表示倒着数的位置 |
通过数据源方式获得批量赋值 | $array[] = '[['_'],[1,2,"string", true, 5]]' | 数组为表头为'_', 而且内容只有一行的数据源,可以通过数据源的手段一次性获得批量的数组赋值。还可使用其它方式,如从文件中读取