Я использую следующую функцию для добавления тестов в свои тестовые примеры.Связывание с различными методами
def add_tests(cls, args, name_builder):
for a in args:
def tb(a):
return lambda self: self.test_body(*a)
setattr(cls, name_builder(a), tb(a))
На данный момент я могу использовать его как это:
class TestEqual(unittest.TestCase):
def test_body(self, i, j):
self.assertNotEquals(0, i-j)
add_tests(TestEqual, ((0,0),(1,1)), build_name_1)
Как я могу изменить add_tests для того, чтобы сделать что-то вроде этого:
class TestRestart(unittest.TestCase):
def test_mode_flow(self, mode):
machine.set_mode(mode)
self.assertTrue(machine.restart())
def test_gear_flow(self, gear, speed):
machine.set_gear(gear)
machine.set_speed(speed)
self.assertTrue(machine.restart())
add_tests(TestRestart, test_mode_flow, (mode.SILENT, mode.NOISY), build_name_mode)
add_tests(TestRestart, test_gear_flow, ((1,33),(4,22)), build_name_gear)
Другими словами, я хочу для удаления жестко запрограммированного вызова до self.test_body(*a)
и вместо этого передать в качестве аргумента метод выбора.
Какая версия Python? – Veedrac