Если у меня есть две реализации функции, которая должна делать то же самое, есть ли способ проверить обе функции в отношении тех же тестовых случаев?, выполняющий тот же тест против множества реализаций
Поскольку у меня есть это:
def foo1(args):
// do some stuff
return result1
def foo2(args):
// do some other stuff
return result2
import unittest
class TestFoo(unittest.TestCase):
def test_1(self):
arg = // something
result = // expected result
self.failUnless(foo1(arg) == result)
def test_2(self):
arg = // something
result = // expected result
self.failUnless(foo2(arg) == result)
Но test_2 идентичен test_1, за исключением функции испытывается. Если я внес изменения в тестовый пример, я должен изменить оба варианта, и если я добавлю больше тестов, я должен их дублировать.
я мог бы сделать что-то вроде:
class TestFoo(unittest.TestCase):
def test_(self):
fns = [foo1, foo2]
arg = // something
result = // expected result
for fn in fns:
self.failUnless(fn(arg) == result)
Это имеет меньше дублирования кода, но теперь, если либо реализация не проходит тест, UnitTest не сообщает, какой из них.
Возможно ли параметризовать TestCase функцией, подлежащей тестированию?
Я понимаю, что я не должен стараться быть слишком умным с тестированием, поэтому, возможно, я должен оставить его как есть, дублированный код и все такое.