根据条件应用不同的装饰器
Apply different decorators based on a condition
我正在使用 unittest 和 nose-parametarized,并希望根据条件对测试应用不同的装饰器。
我有一个测试,我想跳过 unittest.skip
测试或根据传递给 args 的参数执行它 @parameterized.expand(args)
。
我想我需要另一个装饰器来对测试应用适当的装饰器,但现在确定如何。
伪代码可能是这样的:
@validate_data(args)
def test(args):
...
其中 @validate_data(args)
是一个装饰器,它应用 unittest.skip
如果 args ==None 或 @parameterized.expand(args)
否则
任何 comments/suggestions 不胜感激。
装饰器也可以作为函数来调用。 @decorator
等同于 decorator(func)
,@decorator(args)
等同于 decorator(args)(func)
。因此,您可以在装饰器中有条件地 return 那些函数 return 的值。下面是一个例子:
def parameterized_or_skip(args=None):
if args:
return parameterized.expand(args)
return unittest.skip(reason='No args')
...
@parameterized_or_skip(args)
def my_testcase(self, a, b):
pass
我正在使用 unittest 和 nose-parametarized,并希望根据条件对测试应用不同的装饰器。
我有一个测试,我想跳过 unittest.skip
测试或根据传递给 args 的参数执行它 @parameterized.expand(args)
。
我想我需要另一个装饰器来对测试应用适当的装饰器,但现在确定如何。
伪代码可能是这样的:
@validate_data(args)
def test(args):
...
其中 @validate_data(args)
是一个装饰器,它应用 unittest.skip
如果 args ==None 或 @parameterized.expand(args)
否则
任何 comments/suggestions 不胜感激。
装饰器也可以作为函数来调用。 @decorator
等同于 decorator(func)
,@decorator(args)
等同于 decorator(args)(func)
。因此,您可以在装饰器中有条件地 return 那些函数 return 的值。下面是一个例子:
def parameterized_or_skip(args=None):
if args:
return parameterized.expand(args)
return unittest.skip(reason='No args')
...
@parameterized_or_skip(args)
def my_testcase(self, a, b):
pass