在工作中,我们在选定的测试函数上使用装饰器@rollback
,它将回滚在该测试期间所做的任何数据库更改。
我最近开始在一些用例中使用 pytest 的依赖注入,包括 with@pytest.mark.parametrize(...)
和pytest_funcarg__XXX
hook。不幸的是,这与我们装饰的测试功能相冲突。
我怎样才能使这项工作?
我的第一个想法是使用自定义标记,说@pytest.mark.rollback
并做类似的事情:
def rollback(meth):
"""Original rollback function"""
...
def pytest_runtest_setup(item):
if not isinstance(item, pytest.Function):
return
if hasattr(item.obj, 'rollback'):
item = rollback(item)
这样的方法真的可行吗?