Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Lambda函数简化单元测试?_Python_Unit Testing_Nose - Fatal编程技术网

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))