我正在python中进行一些单元测试。我在下面提到AssertionError。我想检查温度范围,如果它小于30且大于25,那么代码应该通过,但它给了我错误。我无法弄清楚我在哪里弄错了。
test_csv_read_data_headers (__main__.ParseCSVTest) ... ok
test_data_fuelConsumption (__main__.ParseCSVTest) ... ok
test_data_temperature (__main__.ParseCSVTest) ...FAIL
test_data_timestamp (__main__.ParseCSVTest) ... ok
=============================================== =======================
Traceback (most recent call last):
File "try.py", line 36, in test_data_temperature
30 > ali > 25, True
AssertionError: False != True
Ran 4 tests in 0.014s
FAILED (failures=1)
我的测试失败的温度部分代码如下。
def test_data_temperature(self):
column = [row[0].split()[3] for row in read_data(self.data)[1:]]
ali = column[0:4]
print ali
self.assertEqual(
30 > ali > 25, True
)
我在ali中打印数据,它是以列表的形式
['25.8', '25.6', '25.8', '25.8']
我很困惑,我怎么能检查这个范围并做出断言以便通过测试。如果有人给出提示或示例。我真的很感激。
答案 0 :(得分:5)
您正在将列表与整数进行比较。
您需要单独比较每个值(例如,使用python builtin all)。尝试像
这样的东西self.assertTrue(all(30 > a > 25 for a in ali))
您还可以检查列表的min
和max
值。稍微(可忽略地)性能更差(我认为?)但是如果/当测试失败时会给你更多的信息。
self.assertTrue(max(ali) < 30)
self.assertTrue(min(ali) > 25)