Этот ответ объясняет, как динамически создавать тестовые случаи.
Код ответа:
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:
магии в игре, в основном:
functools.partial()
(т.е. для создания функции-оболочки с одним дополнительным параметром это еще не известно)self
осмысленным ключевым словом или lambda spam
будет работать так же хорошо?.check()
прекрасно работает за пределами class
es?lambda
(не говоря уже о том, что я согласен с Гвидо и Алексом в том, что это бельмо на глазу, и я хочу обойтись без:)