51Testing软件测试论坛

标题: 环境变量 [打印本页]

作者: 假装不在    时间: 2008-9-23 17:14
标题: 环境变量
首先给大家看看下边这张图[attach]45567[/attach],
看完后,你初始一瞄,发现,哇,不可能,怎么P=22,Environment.Value ("menu_now")=21  但为什么p>=Environment.Value ("menu_now")为 false呢?

大家看仔细点,在Environment.Value ("menu_now")的返回值中,是有多了个双引号!这个其实一个字符串来的,所以永远无论怎么变,p>=Environment.Value ("menu_now")永远为false。

这个小小的问题,埋藏了3个月之久,脚本运行过程出现的种种奇怪现象的祸根竟然是一个如此小的误会。
作者: ellven    时间: 2008-9-23 17:35
"21"是string型
作者: rcpp    时间: 2008-9-23 17:40
所以说,安检还是很重要滴
if isnumeric(...) then
    ...
end if
作者: hsjzfling    时间: 2008-9-23 19:01
原帖由 rcpp 于 2008-9-23 17:40 发表
所以说,安检还是很重要滴
if isnumeric(...) then
    ...
end if


这种情况下用isnumeric没啥用处。。。VBS会很智能的在这里做类型转换的
If isnumeric("21") Then
msgbox "is numeric"
else
msgbox "is not numeric"
End If
你觉得结果应该是啥呢~~

此外,VBS还会把Currency类型的值也认为是numeric,比如(在默认的美式Currency系统中)
If isnumeric("21,100") Then
msgbox "is numeric"
else
msgbox "is not numeric"
End If
执行下看看结果咯~
作者: rcpp    时间: 2008-9-24 09:41
oh god,看来我对vbs的了解还是不够多啊
vbs能够强制类型转换吧?转换了再判断吧

还好以后不必陪测试人员写脚本了,不然写错了vbs还要被抱怨~
作者: heqingbluesky    时间: 2008-9-24 15:28
因为VBS把所有默认的变量类型都是Variable,不是我们常说的Integer,String,Double……,所以当你要比较的不同类型的变量时候,一定要保证变量的类型一直。下面的结果就是正确的:
Dim q

q=22
Msgbox Environment.Value("Test_Value") 'Test_Value=21

If q>CInt(Environment.Value("Test_Value")) Then
        Msgbox "True"
        Else
        Msgbox "False"
End If

所以说VBS是一种弱语言,没有VB这么好用了。这个估计要QTP的不断升级才能检测得到。
作者: hsjzfling    时间: 2008-9-24 15:51
知道VBS的这个弱类型特性了,要改进的就是编程习惯了~
作者: 假装不在    时间: 2008-9-24 15:55
这个也是忽列这点,昨天才发现的问题,看来温故可以找到新BUG




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2