在UFT中,您可以使用'数据'这本质上是一个excel表,可用于推动测试。
我的问题是,如果其中一个单元格为空,则其值为空字符串还是为空?无论哪种方式,我都可以解决它,但我很好奇,所以我可以帮助解决问题的其余部分。
答案 0 :(得分:2)
首先,我知道没有data
功能。您可能正在引用DataTable.Value
方法。
DataTable.Value
应始终为空单元格返回空字符串。
关于表现的问题 - 不,我不希望这里出现瓶颈。即使 - 针对您尚未面临的性能问题进行优化也称为过早优化。不要那样做。今天的CPU速度太快,您无法感知IsEmpty
,IsNull
或检查空字符串相等性之间的差异。
通常有其他操作消耗更多的运行时间,并且更值得优化。
Null
值和IsNull
函数很少用于VBScript,或者就此而言,QTP / UFT。
对于从未收到过值(或明确收到Empty
)的变量,您可以认为存在IsEmpty
和Empty
。
与此相反,Nothing
对于将变量初始化为Empty
非常有用 - 如果该变量稍后要保存对象引用,则因为Is Nothing
返回有效值对于这两种情况下的变量(情况1:未初始化,即初始化为Nothing
,情况2:分配给有效的对象实例),如果变量包含Is Nothing
,Empty
将失败(RTE:“需要对象”)。类似地,将单元化对象引用变量初始化为Empty
(考虑一下,因为这会发生什么!)然后使用Set
将该变量分配给另一个变量(因为它可能持有如果包含的值为Empty
(您需要使用=
和Set
的正常分配),则非空案例中的对象引用将失败(即不是RTE)如果它包含Nothing
(或对象引用)。
是的,这就是说,DataTable.Value
为空单元格返回一个空字符串,而不 Empty
值,这是违反直觉的。
增加混淆潜力,Empty = ""
总是返回true
,这可能不是人们所期望的,因为嘿!根据定义,空字符串值是一个字符串值,就像非空字符串一样,为什么它应该被认为等于Empty
?但事实是,因为进行比较,Empty
被转换为字符串,CStr (Empty)
是空字符串,当然是“”。
答案 1 :(得分:0)
最后RDP实际上有效,我想我有答案!
我发现以下内容似乎描述了我遇到的同一问题:http://www.sqaforums.com/forums/hp-unified-functional-testing-uft-mercury-quicktest-pro-qtp/150547-isempty-isnull-not-returning-true-blank-cells-local-datasheet.html
本质上是isNull,isEmpty,检查null并不是偶尔工作。基于论坛帖子以及我刚检查过的变量<> ""似乎是最好的方法。
然而,这会对性能产生影响吗?