这个答案解释了如何动态创建测试用例。
答案代码:
class Tests(unittest.TestCase):
def check(self, i, j):
self.assertNotEquals(0, i-j)
for i in xrange(1, 4):
for j in xrange(2, 6):
def ch(i, j):
return lambda self: self.check(i, j)
setattr(Tests, "test_%r_%r" % (i, j), ch(i, j))
我已经测试过并且它有效,但我无法弄清楚如何?
我很难理解lambda self:
这里的魔法,主要是:
- 此处使用的 lambda 是否与执行完全相反的操作(即使用一个未知的额外
functools.partial()
参数创建包装函数) - 是
self
一个有意义的关键字还是lambda spam
同样有效? - 那个 lambda 的评估点是什么?
- 为什么在es 范围
.check()
之外完全没问题?class
- 如果没有lambda ,你如何做到这一点?- 如果我理解正确,你应该可以不用
lambda
(更不用说我同意 Guido 和 Alex 的观点,这是一个令人眼花缭乱的东西,我想不用 :)