SilkTest提供了一种可以是任何数据类型的类型anytype,如果你把一个变量申明为anytype,它的数据类型在运行时
是可以动态变化的。比如下面这个例子:
- [-] testcase anytype_var()
- [ ] AnyType var = 10
- [ ] Print(var)
- [ ] var = “hello”
- [ ] Print(var)
复制代码
但其实这个anytype并非是真正的动态变量,起码在list结构中不是这样的。当你申明一个list of anytype的列表的时
候,你无法动态改变该列表中anytype变量的类型。下面是一个例子:
- [-] testcase anytype_list_single()
- [ ] list of ANYTYPE Row = {10, 20}
- [ ] Print(Row[1] )
- [ ] Row[1] = “hello”
- [ ] Print(Row[1] )
复制代码
运行它你会得到一个*** Error: Type mismatch — Expecting an INTEGER的错误。
但是如果你运行接下来这个非常类似的例子,却不会有什么问题。
- [-] testcase anytype_list_mix()
- [ ] list of ANYTYPE Row = {10, “world”}
- [ ] Print(Row[1] )
- [ ] Row[1] = “hello”
- [ ] Print(Row[1] )
- [ ] Row[2] = 20
- [ ] Print(Row[2] )
复制代码
所以我怀疑SilkTest会预先检查list中元素的类型,如果所有元素都是一种类型,那么SilkTest自动认为该list是该类型
而非anytype.如果list中确实存在多种数据类型,那么SilkTest认为list的每个元素都是anytype的。
大家在编程的时候可能需要注意该问题。 |