def write_case_log(func):
def wrapper(*args, **kwargs):
logger.info("{}开始执行".format(func.__name__))
func(*args,**kwargs)
logger.info("{}执行中".format(args))
logger.info("{}执行结束",format(func.__name__))
return wrapper
被装饰函数
@allure.story("查询API")
@write_case_log
def test_query_user_information(httprequest):
params={
"token": read_yaml("token")
}
response=httprequest.get("/auth/query",params=params)
httprequest.assert_response(response)
assert response.json()["msg"]=="操作成功"
运行报错:TypeError: test_get_testplan() missing 1 required positional argument: 'httprequest'
解决:加上@wraps
,其常用于装饰器内部,保护被装饰的函数func属性不被修改。
参考:python装饰器——获取被修饰的函数参数_python装饰器获取方法参数值_松子吃松子的博客-CSDN博客