Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def test_params(*params, **kwparams):
- print('test params: ', params, kwparams)
- def decorator(function_results):
- function, result = function_results
- size, args, kwargs = len(result), [], []
- print('number of test cases: ', size)
- for index in range(size):
- arg = []
- for value in [param[index] for param in params]:
- if value != None:
- arg.append(value)
- args.append(arg)
- kwarg = {}
- for key, value in kwparams.items():
- value = kwparams[key][index]
- if value != None:
- kwarg[key] = value
- kwargs.append(kwarg)
- for index in range(size):
- computed = function(*args[index], **kwargs[index])
- if computed != result[index]:
- raise AssertionError(f"Test case: args={args[index]} kwargs={kwargs[index]}, return={computed} != {result[index]}")
- return function
- return decorator
- def test_results(*results):
- print('test results: ', results)
- def decorator(function):
- return function, results
- return decorator
- # goal: test values when initializing function with decorator
- @test_params([1, 2, 3], [4, None, 6], z=[2 , 2, None])
- @test_results(7, 4, 9)
- def add(*args, **kwargs):
- result = sum(args + tuple(kwargs.values()))
- print('add: ', args, kwargs, result)
- return result
- print('after definition')
- add(12,23, q=12)
- add(43,46, w=1233)
Add Comment
Please, Sign In to add comment