ant*_*uan 6 python unit-testing sqlalchemy
我使用 sqlalchemy 1.0。我的项目有多个模型,其中一些具有事件侦听器,例如
event.listen(Model, 'after_update', Model._after_update).
在单元测试的情况下,我需要禁用模型/会话/等上的所有事件侦听器。
特定测试完成后,我需要启用所有侦听器。
有没有办法实现这一目标?
您可以从event.registry._key_to_collection. 这是一个带有键的字典(id(target), identifier, id(function))。然后用 删除它们event.remove。
import ctypes
from sqlalchemy import event
def clear_event_listeners(model):
keys = [k for k in event.registry._key_to_collection if k[0] == id(model)]
for key in keys:
target = model
identifier = key[1]
fn = ctypes.cast(key[2], ctypes.py_object).value # get function by id
event.remove(target, identifier, fn)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |