Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import inspect
- def labelable_yielded_case(case):
- argspec = inspect.getargspec(case)
- if argspec.defaults is not None:
- defaults_list = [''] * (len(argspec.args) - len(argspec.defaults)) + argspec.defaults
- else:
- defaults_list = [''] * len(argspec.args)
- argument_defaults_list = zip(argspec.args, defaults_list)
- case_wrappers = []
- def add_description(wrapper_id, argument_dict):
- case_wrappers[wrapper_id].description = case.__doc__.format(**argument_dict)
- def case_factory(*factory_args, **factory_kwargs):
- def case_wrapper_wrapper():
- wrapper_id = len(case_wrappers)
- def case_wrapper(*args, **kwargs):
- args = factory_args + args
- argument_list = []
- for argument in argument_defaults_list:
- argument_list.append(list(argument))
- for index, value in enumerate(args):
- argument_list[index][1] = value
- argument_dict = dict(argument_list)
- argument_dict.update(factory_kwargs)
- argument_dict.update(kwargs)
- add_description(wrapper_id, argument_dict)
- return case(*args, **kwargs)
- case_wrappers.append(case_wrapper)
- case_wrapper.__name__ = case.__name__
- return case_wrapper
- return case_wrapper_wrapper()
- return case_factory
- class TestTest(object):
- def __init__(self):
- self.data = None
- def setUp(self):
- print 'setup', self
- self.data = (1,2,3)
- def test_all(self):
- for index, value in enumerate((1,2,3)):
- yield self.validate_equality(), index, value
- def test_all_again(self):
- for index, value in enumerate((1,2,3)):
- yield self.validate_equality_again, index, value
- @labelable_yielded_case
- def validate_equality(self, index, value):
- '''element {index} equals {value}'''
- print 'test', self
- assert self.data[index] == value, 'expected %d got %d' % (value, self.data[index])
- def validate_equality_again(self, index, value):
- print 'test', self
- assert self.data[index] == value, 'expected %d got %d' % (value, self.data[index])
- validate_equality_again.description = 'again'
- import inspect
- def labelable_yielded_case(case):
- argspec = inspect.getargspec(case)
- if argspec.defaults is not None:
- defaults_list = [''] * (len(argspec.args) - len(argspec.defaults)) + argspec.defaults
- else:
- defaults_list = [''] * len(argspec.args)
- argument_defaults_list = zip(argspec.args, defaults_list)
- case_wrappers = []
- def add_description(wrapper_id, argument_dict):
- case_wrappers[wrapper_id].description = case.__doc__.format(**argument_dict)
- def case_factory(*factory_args, **factory_kwargs):
- def case_wrapper_wrapper():
- wrapper_id = len(case_wrappers)
- def case_wrapper(*args, **kwargs):
- argument_list = []
- for argument in argument_defaults_list:
- argument_list.append(list(argument))
- for index, value in enumerate(args):
- argument_list[index][1] = value
- argument_dict = dict(argument_list)
- argument_dict.update(kwargs)
- add_description(wrapper_id, argument_dict)
- return case(**argument_dict)
- case_wrappers.append(case_wrapper)
- case_name = case.__name__ + str(wrapper_id)
- case_wrapper.__name__ = case_name
- if factory_args:
- setattr(factory_args[0].__class__, case_name, case_wrapper)
- return getattr(factory_args[0].__class__, case_name)
- else:
- return case_wrapper
- return case_wrapper_wrapper()
- return case_factory
- class TestTest(object):
- def __init__(self):
- self.data = None
- def setUp(self):
- self.data = (1,2,3)
- def test_all(self):
- for index, value in enumerate((1,2,3)):
- yield self.validate_equality(), index, value
- @labelable_yielded_case
- def validate_equality(self, index, value):
- '''element {index} equals {value}'''
- assert self.data[index] == value, 'expected %d got %d' % (value, self.data[index])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement