SilkTest点滴36 – anytype的陷阱

SilkTest提供了一种可以是任何数据类型的类型anytype,如果你把一个变量申明为anytype,它的数据类型在运行时

是可以动态变化的。比如下面这个例子:

  1. [-] testcase anytype_var()
  2.         [ ] AnyType var = 10
  3.         [ ] Print(var)
  4.         [ ] var = “hello”
  5.         [ ] Print(var)

复制代码

但其实这个anytype并非是真正的动态变量,起码在list结构中不是这样的。当你申明一个list of anytype的列表的时

候,你无法动态改变该列表中anytype变量的类型。下面是一个例子:

  1. [-] testcase anytype_list_single()
  2.         [ ] list of ANYTYPE Row = {10, 20}
  3.         [ ] Print(Row[1] )
  4.         [ ] Row[1] = “hello”
  5.         [ ] Print(Row[1] )

复制代码

运行它你会得到一个*** Error: Type mismatch — Expecting an INTEGER的错误。
但是如果你运行接下来这个非常类似的例子,却不会有什么问题。

  1. [-] testcase anytype_list_mix()
  2.         [ ] list of ANYTYPE Row = {10, “world”}
  3.         [ ] Print(Row[1] )
  4.         [ ] Row[1] = “hello”
  5.         [ ] Print(Row[1] )
  6.         [ ] Row[2] = 20
  7.         [ ] Print(Row[2] )

复制代码

所以我怀疑SilkTest会预先检查list中元素的类型,如果所有元素都是一种类型,那么SilkTest自动认为该list是该类型

而非anytype.如果list中确实存在多种数据类型,那么SilkTest认为list的每个元素都是anytype的。

大家在编程的时候可能需要注意该问题。

Leave a comment

请输入正确的验证码