2016-07-28 5 views
1

Я использую фильтр remove empty values from a list:Как я могу протестировать фильтр?

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

Как сделать I блок-тест этот кусок кода?

Все перечисленное не потому, что возвращение 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(['']) == [] 
Смежные вопросы