如何对过滤器进行单元测试?

时间:2016-07-28 20:43:58

标签: python unit-testing python-3.x filter pytest

我使用过滤器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, [])

1 个答案:

答案 0 :(得分:1)

根据this question的评论和确认,似乎最好的解决方案是"消费"过滤器。 因为我使用参数化测试,所以最好的选择是在函数本身中执行此操作并返回一个普通列表。

所以我的clean_list功能现在是:

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

现在通过以下单元测试:

assert clean_list(['']) == []