Robot Framework中Should Not Be Equal判断0b1011与11为何未失败?
问题分析:为什么
Should Not Be Equal断言在数值相等时却通过了? 嘿,我来帮你拆解这个反直觉的问题!你遇到的核心矛盾,其实源于对断言比较逻辑的误解——你默认它在比较数值大小,但实际上你用的测试框架里,Should Not Be Equal可能是在比较值的数据类型或字面表示形式,而非单纯的数值。
咱们对应你的测试用例具体说:
- 第一个用例里,
0b1011是二进制字面量,11是十进制整数。如果测试框架把这两个值识别为不同类型(比如一个标记为二进制特殊类型,另一个是普通十进制整数),或者直接对比字面量的字符串形式,就会判定二者“不相等”,所以Should Not Be Equal断言直接通过,而非你预期的失败。 - 第二个用例的
0b1011和0xB(十六进制的11)也是同理:框架可能把它们归为不同的字面量表示类型,因此判定不相等,断言顺利通过。
总结一下:你想测试的是“数值相等时,Should Not Be Equal应该失败”,但框架的比较逻辑不在数值层面,而是在值的身份/类型/字面形式上。如果要验证数值相等的场景,应该用Should Be Equal断言(此时数值相等会让断言通过);要是想让Should Not Be Equal失败,得传入完全一致的数值+类型组合,比如两个都是十进制11,或者两个都是二进制0b1011。
内容的提问来源于stack exchange,提问作者HKN
相关产品推荐
相关产品推荐

