0

我正在使用单元测试和鼻子参数化,并希望根据条件将不同的装饰器应用于测试。

我有一个测试,我想跳过unittest.skip测试或@parameterized.expand(args)根据传递给 args 的参数执行它。

我想我需要另一个装饰器来将适当的装饰器应用于测试,但现在确定如何。

伪代码可能是这样的:

@validate_data(args)
    def test(args):
    ...

如果 args ==None 或其他情况下@validate_data(args)适用的装饰器在哪里unittest.skip@parameterized.expand(args)

任何意见/建议表示赞赏。

4

1 回答 1

2

装饰器也可以作为函数调用。@decorator等价于decorator(func)和。因此,您可以在装饰器中有条件地返回这些函数返回的值。下面是一个例子:@decorator(args)decorator(args)(func)

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
于 2016-07-22T01:06:22.590 回答