Python Lambda函数简化单元测试?
我的体育课定义如下:Python Lambda函数简化单元测试?,python,unit-testing,nose,Python,Unit Testing,Nose,我的体育课定义如下: Sport: - name - other fields 我有一个测试,我想验证添加运动“橄榄球”是否包含在运动对象列表中 目前,测试是脆弱的,检查索引处的对象名称,我知道它位于: self.assertEquals('rugby', sports_objects[3].name) 我想将其更改为self.assertIn(),这样测试就不会那么脆弱,并且在索引更改时也不会受到影响(因为我不关心这里的顺序) 有没有一种方法可以在不依赖索引的情况下(使用lambda函
Sport:
- name
- other fields
我有一个测试,我想验证添加运动“橄榄球”是否包含在运动对象列表中
目前,测试是脆弱的,检查索引处的对象名称,我知道它位于:
self.assertEquals('rugby', sports_objects[3].name)
我想将其更改为self.assertIn(),这样测试就不会那么脆弱,并且在索引更改时也不会受到影响(因为我不关心这里的顺序)
有没有一种方法可以在不依赖索引的情况下(使用lambda函数?)
编辑:
两个答案都给出了很好的答案。我有多个assert语句,因此我的最终解决方案是:
sports_names = [i.name for i in sports_objects]
self.assertIn('rugby', sports_names)
self.assertIn('baseball', sports_names)
您可以随时执行以下操作:
self.assertIn('rugby', (x.name for x in sports_objects))
或者类似的
import operator
op = operator.attrgetter("name")
self.assertIn('rugby', map(op, sport_objects))
import operator
op = operator.attrgetter("name")
self.assertIn('rugby', map(op, sport_objects))