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

Rio*_*Rio 0 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
Run Code Online (Sandbox Code Playgroud)

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

失败: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
Run Code Online (Sandbox Code Playgroud)
Ran 4 tests in 0.014s

FAILED (failures=1)
Run Code Online (Sandbox Code Playgroud)

我的测试失败的温度部分的代码如下.

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 
            )
Run Code Online (Sandbox Code Playgroud)

我在ali中打印数据,它是以列表的形式

['25.8', '25.6', '25.8', '25.8']  
Run Code Online (Sandbox Code Playgroud)

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

Hol*_*way 5

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

您需要将每个值分别进行比较(例如,使用Python内建所有).尝试类似的东西

self.assertTrue(all(30 > a > 25 for a in ali))
Run Code Online (Sandbox Code Playgroud)

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

self.assertTrue(max(ali) < 30)
self.assertTrue(min(ali) > 25)
Run Code Online (Sandbox Code Playgroud)

  • 好吧考虑-165 <-155. (2认同)