如何对过滤器进行单元测试?
How do I unit test a filter?
我正在使用过滤器 remove empty values from a list:
def clean_list(inp):
return filter(None, inp)
如何对这段代码进行单元测试?
以下所有操作均失败,因为 clean_list
的 return 是一个 filter 对象,它与以下任何一个都不匹配:
assert clean_list(['']) == []
assert clean_list(['']) == ['']
assert clean_list(['']) == filter(None, [''])
assert clean_list(['']) == filter(None, [])
根据 this question 的评论和确认,最好的解决方案似乎是 "consume" 过滤器。
因为我正在使用参数化测试,所以最好的选择是在函数本身和 return 一个普通列表中执行此操作。
所以我的 clean_list
函数现在是:
def clean_list(inp):
return list(filter(None, inp))
现在通过了以下单元测试:
assert clean_list(['']) == []
我正在使用过滤器 remove empty values from a list:
def clean_list(inp):
return filter(None, inp)
如何对这段代码进行单元测试?
以下所有操作均失败,因为 clean_list
的 return 是一个 filter 对象,它与以下任何一个都不匹配:
assert clean_list(['']) == []
assert clean_list(['']) == ['']
assert clean_list(['']) == filter(None, [''])
assert clean_list(['']) == filter(None, [])
根据 this question 的评论和确认,最好的解决方案似乎是 "consume" 过滤器。 因为我正在使用参数化测试,所以最好的选择是在函数本身和 return 一个普通列表中执行此操作。
所以我的 clean_list
函数现在是:
def clean_list(inp):
return list(filter(None, inp))
现在通过了以下单元测试:
assert clean_list(['']) == []