按照平时用法,结果为test用例使用装饰器时报错
def upgrade_decorator(func):
def wrapper(self, *args, **kwargs):
data = eval(kwargs["case"]["data"])
func(self, *args, **kwargs)
return wrapper
@pytest.mark.parametrize("case", cases)
@upgrade_decorator
def test_case_upgrade(self, case, login_page):
data_str = context.replace(case["data"])
报错为:In wrapper: function uses no argument ‘case’
修改为以下代码后,报错消失,testcase正常运行
import six
def upgrade_decorator(func):
@six.wraps(func)
def wrapper(self, *args, **kwargs):
data = eval(kwargs["case"]["data"])
func(self, *args, **kwargs)
return wrapper
@pytest.mark.parametrize("case", cases)
@upgrade_decorator
def test_case_upgrade(self, case, login_page):
data_str = context.replace(case["data"])
对于@six.wraps的用法,我能查到的最详细的内容Python中functiools.wraps()的功能以及用法详解