@pytest.mark.hookwrapper获得原函数使用的参数
时间: 2024-10-16 13:20:42 浏览: 28
pytest测试框架进阶篇
`@pytest.mark.hookwrapper`是一个Pytest钩子装饰器,用于包裹测试套件中的hook(钩子函数)。它允许你在hook执行前后添加额外的行为,比如时间记录、日志跟踪或异常处理等。当你在hook上应用这个装饰器时,你可以通过访问`request.node.get_closest_marker('hookwrapper')`获取到标记了`hookwrapper`的元信息。
在hook执行过程中,你可以从`yield`语句后的生成器中获取原始函数的参数。例如:
```python
def pytest_runtest_protocol(item, nextitem):
marker = item.get_closest_marker('hookwrapper')
if marker:
# 获取原始函数的参数
original_func = marker.kwargs['function']
args, kwargs = original_func.__code__.co_varnames, original_func.__defaults__
# 原始函数的执行...
yield
```
在这里,`args`包含了函数定义中的形参名,而`kwargs`则是默认值(如果有的话),这两个变量可以帮助你了解原始hook调用时传入的参数。
阅读全文