2016-07-28 77 views
1

我使用的過濾器remove empty values from a list如何單元測試過濾器?

def clean_list(inp): 
    return filter(None, inp) 

我如何單元測試這段代碼?

下面所有的失敗,因爲clean_list回報是一個過濾對象,它不匹配任何這些:

assert clean_list(['']) == [] 
assert clean_list(['']) == [''] 
assert clean_list(['']) == filter(None, ['']) 
assert clean_list(['']) == filter(None, []) 
+2

消耗結果爲序列和測試? – jonrsharpe

+1

** assert list(clean_list [''])== [] ** – mtadd

+0

@mtadd - jon的評論引導我到那,但我使用參數化 - 這可能在參數化的上下文中嗎? –

回答

1

基於從this question的意見和確認,它似乎是最佳解決方案是「消費」過濾器。 因爲我使用參數化測試,所以最好的選擇是在函數本身中執行此操作並返回一個普通列表。

所以我clean_list功能現在是:

def clean_list(inp): 
    return list(filter(None, inp)) 

和下面的單元測試通過了:

assert clean_list(['']) == [] 
相關問題