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博客