【发布时间】:2018-05-18 08:49:51
【问题描述】:
我遇到了一个我似乎无法弄清楚的奇怪测试步骤。基本上在测试框架中,我使用典型的“应该”和“是”来测试变量。返回的值相同,但该步骤仍然失败。经过一些繁琐的调试后,我意识到失败的步骤也有不同的类型,尽管值相同,如下所示:
Test 3.3: Check value
HL Value test: HL_CodingCounter == 2
Normal Value test: sysConfigRWData.codingCounter == 2
Should: {
'sysConfigRWData.codingCounter': 2
'HL_CodingCounter': 2
}
Is: {
'sysConfigRWData.codingCounter': 2
'HL_CodingCounter': 2
}
is: 2, <class 'mySitePackage.datapoints.DataPoint_CodingCounter'>:
should: 2, <type 'int'>:
delta
Should: HL_CodingCounter: 2
Is: HL_CodingCounter: 2
Is: 2, <type 'int'>:
Should: 2, <type 'int'>:
在这里您可以看到失败的是 HL_CodingCounter 而不是其他参数。
那么在Python中使用比较运算符(==)时,type是否也被考虑在内?如果是这样,我该如何规避这一点,以便只考虑实际值?
【问题讨论】:
-
==运算符由类型定义。如果它们是不同的类型,大多数类型不会比较相等。我不知道您所说的“实际价值”是什么意思。那就是被比较的... -
正如我所怀疑的那样。如何比较价值?
-
你这是什么意思?您正在按价值进行比较。如果您提供minimal reproducible example 而不仅仅是某些测试框架的一些无上下文输出,将会有所帮助
-
在我的例子中,我有两个变量,每个都给出“2”,但它们的类型不同:一个是整数,另一个是类。
-
一个类如何等于
int对象?请注意,我认为您的第二个对象不是类对象。我认为它是用户定义类的一个实例。再次,请提供minimal reproducible example
标签: python types comparison-operators