在UFT中,空数据单元有什么价值?它是空字符串还是null?

时间:2014-12-17 18:01:05

标签: vbscript qtp hp-uft

在UFT中,您可以使用'数据'这本质上是一个excel表,可用于推动测试。

我的问题是,如果其中一个单元格为空,则其值为空字符串还是为空?无论哪种方式,我都可以解决它,但我很好奇,所以我可以帮助解决问题的其余部分。

2 个答案:

答案 0 :(得分:2)

首先,我知道没有data功能。您可能正在引用DataTable.Value方法。

DataTable.Value应始终为空单元格返回空字符串。

关于表现的问题 - 不,我不希望这里出现瓶颈。即使 - 针对您尚未面临的性能问题进行优化也称为过早优化。不要那样做。今天的CPU速度太快,您无法感知IsEmptyIsNull或检查空字符串相等性之间的差异。 通常有其他操作消耗更多的运行时间,并且更值得优化。

Null值和IsNull函数很少用于VBScript,或者就此而言,QTP / UFT。

对于从未收到过值(或明确收到Empty)的变量,您可以认为存在IsEmptyEmpty

与此相反,Nothing对于将变量初始化为Empty非常有用 - 如果该变量稍后要保存对象引用,则因为Is Nothing返回有效值对于这两种情况下的变量(情况1:未初始化,即初始化为Nothing,情况2:分配给有效的对象实例),如果变量包含Is NothingEmpty将失败(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并不是偶尔工作。基于论坛帖子以及我刚检查过的变量<> ""似乎是最好的方法。

然而,这会对性能产生影响吗?