python和AssertionError中的单元测试:False!= True

时间:2016-11-24 11:08:07

标签: python unit-testing assertion

我正在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

=============================================== =======================

失败:test_data_temp(主要 .ParseCSVTest)

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']  

我很困惑,我怎么能检查这个范围并做出断言以便通过测试。如果有人给出提示或示例。我真的很感激。

1 个答案:

答案 0 :(得分:5)

您正在将列表与整数进行比较。

您需要单独比较每个值(例如,使用python builtin all)。尝试像

这样的东西
self.assertTrue(all(30 > a > 25 for a in ali))

您还可以检查列表的minmax值。稍微(可忽略地)性能更差(我认为?)但是如果/当测试失败时会给你更多的信息。

self.assertTrue(max(ali) < 30)
self.assertTrue(min(ali) > 25)