def skip_dependon(depend): """ :param depend: 依赖的用例函数名,默认为空 :return: wraper_func """ def wraper_func(test_func): @wraps(test_func) # @wraps:避免被装饰函数自身的信息丢失 def inner_func(self): if depend == test_func.__name__: raise ValueError("{} cannot depend on itself".format(depend)) failures = str([fail[0] for fail in self._outcome.result.failures]) errors = str([error[0] for error in self._outcome.result.errors]) # skipped = str([error[0] for error in self._outcome.result.skipped]) or (depend in skipped) flag = (depend in failures) or (depend in errors) if failures.find(depend) != -1: test = unittest.skipIf(flag, "{} failed".format(depend))(test_func) elif errors.find(depend) != -1: test = unittest.skipIf(flag, "{} error".format(depend))(test_func) # elif skipped.find(depend) != -1: # test = unittest.skipIf(flag, "{} skipped".format(depend))(test_func) else: test = test_func return test(self) return inner_func return wraper_func
时间: 2024-02-14 20:23:30 浏览: 73
make_depend:make Depend 列出 .m 文件中使用的函数列表-matlab开发
这是一个装饰器函数,用于给unittest的测试用例函数添加依赖关系。它接受一个参数`depend`,表示这个测试用例函数依赖的函数名,默认为空。它返回一个函数`wraper_func`,这个函数又返回一个函数`inner_func`,这个函数是对测试用例函数进行装饰的实际函数。
`inner_func`中首先对依赖函数名进行判断,如果依赖函数名和测试用例函数名相同,则抛出异常,因为一个测试用例不能依赖于自己。
然后通过`self._outcome.result`来获取测试结果,并判断依赖函数的测试结果。如果依赖函数执行失败(failures),则用`unittest.skipIf`装饰器将测试用例函数标记为跳过,跳过的原因是依赖函数执行失败。同样的,如果依赖函数执行出错(errors),也会将测试用例函数标记为跳过。
最后返回装饰后的测试用例函数。
阅读全文