这个答案解释了如何动态创建测试用例。
答案代码:
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 的观点,这是一个令人眼花缭乱的东西,我想不用 :)