FWScript 条件判断

条件判断结构俗称“if语句”,使用一个条件表达式,然后跟着条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可以不指定的),if语句可以嵌套使用,也就是说if语句后面可以再跟if语句。

  • if 语句
  • if…else 语句
  • if…elseif…else 语句
  • switch…case 语句

if 语句

一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

if 布尔表达式
    (如果布尔表达式为真将执行的语句)
endif

实例

$a=2
if $a>0
    show 变量大于0
endif
执行结果:输出 变量大于0

if…else 语句

一个 if 语句后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。

if 布尔表达式
    /* 如果布尔表达式为真将执行的语句 */
else
    /* 如果布尔表达式为假将执行的语句 */
endif

实例

$a=0
if $a>0
    show 变量大于0
else
    show 变量小于等于0
endif
执行结果:输出 变量小于等于0

if…elseif…else 语句

一个 if 语句后可跟一个可选的 elseif 语句,elseif 语句由一个布尔表达式2后跟一个或多个语句组成,后面可跟一个可选的 else 语句,else 语句在布尔表达式2为假时执行。

if 布尔表达式1
    /* 如果布尔表达式1为真将执行的语句 */
elseif 布尔表达式2
    /* 如果布尔表达式2为真将执行的语句 */
else
    /* 如果布尔表达式2为假将执行的语句 */
endif
elseif 可以用 elif 代替,两者相同

实例

$a=-2
if $a>0
    show 变量大于0
elseif $a==0
    show 变量等于0
else
    show 变量小于0
endif
执行结果:输出 变量小于0

switch…case 语句

FwScript中的switch语句专门为了编写自动化测试脚本的方便而设计,switch 语句中的单个case允许设置成一个变量值,也可以设置成一个区间。

switch 表达式
case 简单表达式
    /* 如果表达式计算结果与简单表达式匹配将执行的语句 */
    break
case 区间值 
    /* 如果表达式计算结果在区间值范围内将执行的语句 */
    break
.
.
default
    /* 如果表达式计算结果与case中的表达式都不匹配将执行的语句 */
endswitch

简单表达式可以为一个整数,一个浮点数,一个字符串,或者一个数字变量,数字变量的值可以为数据源。如果是个数据源,则只要前面switch定义的值在数据源第一列中,则为匹配;如果不是数据源,则完全相等则为匹配。
区间值为使用破折号(‘-’)隔开的两个简单表达式,表示如果switch中的表达式的值落在这个区间内,则执行后面的语句。

注意:switch的定义类似于C语言,所有的case是顺序执行的,直至遇到了Break,不像C#在每个case的执行体后必须强制有Break。像大多数语言一样,case可以连着放在一起。为了便于测试用例的自动化脚本的编写,FWCripts在case语句中加入了区间的概念,也加入了数据集合的概念(使用数据源变量)。

实例

$a=4
$b=11
$datasrc=^(10,20,30)
switch $a
case 1
    show 变量等于整数1
    break
case 1.23
    show 变量等于浮点数1.23
    break
case $b
    show 变量等于数字变量的值
    break
case $datasrc
    show 变量存在于数据源的第一列
    break
case 3-5
    show 变量介于3到5之间
    break
case "hello"
    show 变量等于字符串hello
    break
default
    show 变量不等于以上任何情况
endswitch

注意,FWScript中的switch语言完全针对每个case语句按照if--else的方式执行,因此可以使用变量及区间值。 大多数语言对switch语句有很严格的限制,如不允许使用区间,有的要求必须有Break(如C#),原因是可以在进行代码优化的时候变换成效率非常高的执行代码,也就是说在编译过程中具有很大的代码优化余地。 FWScript则没有这些限制,但代价是没有代码优化的余地,最终执行的效率较低(好在测试脚本的设计执行效率往往是次要的😊)。

<< FWScript 数据源FWScript 循环 >>