Python:如何检查del指令的调用?

2024-09-27 07:32:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想测试功能:

#foo_module.py
def foo(*args, **kwargs):
   bar = SomeClass(*args, **kwargs)
   # actions with bar
   del bar

我选择测试模拟库。我的测试结果如下:

@mock.patch('path.to.foo_module.SomeClass')
def test_foo(self, mock_class):
    foo()
    mock_class.assert_called_once_with()

但我怎么能检查“del bar”的执行情况呢? 调用mock_class.return_value.__del__将引发AttributeError。你知道吗

升级版: 抱歉,我没有提到SomeClass是django.contrib.gis.gdal.datasource.DataSource。数据源已重写__del__方法:

def __del__(self):
    "Destroys this DataStructure object."
    if self._ptr and capi:
        capi.destroy_ds(self._ptr)

在这种情况下del bar在功能之外有作用。所以我应该简单地模拟capi并检查capi.destroy_ds.called。你知道吗


Tags: self功能foodefwithbarargsmock
1条回答
网友
1楼 · 发布于 2024-09-27 07:32:11

检查dir()结果以查看该对象是否仍然存在:

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> a=10
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'a']
>>> del a
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']

对于此脚本:

def f() :
    a = 10
    print dir()
    del a
    print dir()
    objLst = dir()
    if 'a' not in objLst :
        print 'Object deleted'

f()

您可以得到输出:

['a']
[]
Object deleted

相关问题 更多 >

    热门问题