Message140776
Here's a sketch for a possible decorator factory:
def parameters(params, *, builder=_default_param_builder):
def make_parameterized_test(f):
return ParameterizedTest(f, params, builder)
return make_parameterized_test
(default builder would be the one I sketched earlier)
Example usage:
ExampleParams = namedtuple('ExampleParams', 'x y')
all_cases = [ExampleParams(x, y) for x in range(3) for y in range(3)]
def x_y_naming(name, cases):
for idx, case in enumerate(cases, start=1):
x, y = case
yield ("{}_{}_{}_{}".format(name, idx, x, y), case)
class ExampleTestCase(TestCase):
@parameters(all_cases)
def test_example_auto_naming(self, x, y):
self.assertNotEqual(x, y) # fails sometimes :)
@parameters(all_cases, builder=x_y_naming)
def test_example_custom_naming(self, x, y):
self.assertNotEqual(x, y) # fails sometimes :)
Once defined, you're far better equipped than I am to decide how TestLoader and TestCase can best cooperate to generate appropriate test operations and error messages. |
|
Date |
User |
Action |
Args |
2011-07-21 02:23:30 | ncoghlan | set | recipients:
+ ncoghlan, exarkun, pitrou, eric.araujo, r.david.murray, michael.foord, brian.curtin, fperez, Yaroslav.Halchenko, nchauvat, abingham, eric.snow |
2011-07-21 02:23:29 | ncoghlan | set | messageid: <1311215009.68.0.692037192417.issue7897@psf.upfronthosting.co.za> |
2011-07-21 02:23:29 | ncoghlan | link | issue7897 messages |
2011-07-21 02:23:28 | ncoghlan | create | |
|