最近看到很多人问在RobotFramework中怎么比较None与null?或者问能不能用run keyword if比较变量与null、None啊?答案是肯定可以的,但是很多人忽略了空字符串。下面一一述来。
一、概念
1.空字符串:空字符串是指在内存中分配了存储空间,只是值的长度是0,在RobotFramework中表示方法:”;
2.None与null:None与null是指没有在内存中分配空间的,所以是没有值的。为什么None与null放一起说,都是一样的,只是在一些运行上可能不认None,但是null是基本都认的。在RobotFramework中会把null转换成Nome,下面会有例子说明。在RobotFramework中表示方法: None、 N o n e 、 {null},理论上不区分大小写,但是None如果写成none是不认的很奇怪。
二、例子
1.空字符串
(1)下面打开百度,取一下值,然后与null比较
可以看到结果:失败,失败的原因是空字符串不等于None,可以看到明明我写的null,但是结果却显示None,验证了我上面说的会把null转成None。
(2)来看看用run keyword if比较
结果很明显,是打印了456,因为空字符串是不等于null的。
(3)使用run keyword if比较空字符串
结果:是正确的,输出了123
2.None与NULL
None与null我就一起说了,可以看到最后一行,是拿None与null比较
结果:来看结果,都是输出了123,再次证明None与null是一样的,所以任选其一使用就行啦。
3.注意事项
None与null,一定要注意格式,如果直接写成了
testvalue==null,这种比较是直接变量与null这个字符串比较,字符串的值是null,所以如果
t
e
s
t
v
a
l
u
e
==
n
u
l
l
,
这
种
比
较
是
直
接
变
量
与
n
u
l
l
这
个
字
符
串
比
较
,
字
符
串
的
值
是
n
u
l
l
,
所
以
如
果
{test value}的值刚好等于null了,则会输出123
结果:可以看到输出了123,但是当${test value}的值不为null,则会输出456,因为这个不是与null对象比较,而是与字符串值为null的对象比较。
总结:对于空字符串与None比较,其最重要的一点就是要弄清楚,你比较的这个对象到底是空字符串还是None,不要看到没值就认为是None。就好像那句,你看到的不一定是真的。哈哈