【发布时间】:2021-04-09 22:54:42
【问题描述】:
假设我有一个非常简单的日志装饰器:
from functools import wraps
def my_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
print(f"{func.__name__} ran with args: {args}, and kwargs: {kwargs}")
result = func(*args, **kwargs)
return result
return wrapper
我可以将这个装饰器单独添加到每个 pytest 单元测试中:
@my_decorator
def test_one():
assert True
@my_decorator
def test_two():
assert 1
如何自动将此装饰器添加到每个 pytest 单元测试中,这样我就不必手动添加它了?如果我想将它添加到文件中的每个单元测试怎么办?还是在一个模块中?
我的用例是用 SQL 分析器包装每个测试函数,因此低效的 ORM 代码会引发错误。使用 pytest 夹具应该可以工作,但我有数千个测试,所以自动应用包装器而不是将夹具添加到每个测试中会很好。此外,可能有一两个模块我不想分析,因此能够选择加入或退出整个文件或模块会很有帮助。
【问题讨论】:
-
你能提供一些关于你的用例的信息吗? pytest 中的标准方法是使用自动使用的夹具,但也许您想做一些使用夹具无法完成的事情?
-
@MrBeanBremen 刚刚用我的用例更新了上面的问题