You can write a decorator that retrieves data from your specialized repository and passes it to the actual test function. I have done this in the past:
decorator
from functools import wraps
def data_provider(fn_dp):
def test_decorator(fn_test):
@wraps(fn_test)
def wrapper(self, *args, **kwds):
for data in fn_dp():
try:
fn_test(self, **data)
except AssertionError, e:
raise(AssertionError('{0} - [{1}]'.format(e, data)))
return wrapper
return test_decorator
Now I can write my unittests as follows:
data = lambda: (
{
'input': '1234',
'expected_op': '1234'
},
{
'input': '1234',
'expected_op': '1234'
}
)
@helper.data_provider(data)
def test_something(self, input, expected_op):
self.assertEqual(input, expected_op)
.
fn_test(self, **data) data_provider. **data .