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博客
文章讲述了如何使用Python装饰器`@write_case_log`捕获和记录函数执行过程中的信息,并在`test_query_user_information`函数中遇到缺失参数问题时,通过`@wraps`保护原函数属性。

1301

被折叠的 条评论
为什么被折叠?



