我使用过滤器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, [])
答案 0 :(得分:1)
根据this question的评论和确认,似乎最好的解决方案是"消费"过滤器。 因为我使用参数化测试,所以最好的选择是在函数本身中执行此操作并返回一个普通列表。
所以我的clean_list
功能现在是:
def clean_list(inp):
return list(filter(None, inp))
现在通过以下单元测试:
assert clean_list(['']) == []