gpt4 book ai didi

python - 如何模拟缺失的属性

转载 作者:太空狗 更新时间:2023-10-29 21:50:15 26 4
gpt4 key购买 nike

我有一行代码是:

if not hasattr(class.a, u'c'):
return

如何模拟类以便 class.a.c 为 hasattr 返回 False?

如果我这样做:

>>> from mock import MagicMock
>>> mock_class = MagicMock(spec=[u'a'])
>>> hasattr(mock_class, u'a')
True
>>> hasattr(mock_class, u'b')
False
>>> hasattr(mock_class.a, u'c')
True

虽然我没有指定 class.a.c,但它被 mock 了!!!

最佳答案

实际上 mock_class.a 将创建另一个没有规范的 MagicMock。我能想到的唯一方法是将 mock_class 的属性 a 分配给另一个具有规范的 MagicMock,如下所示:

mock_class = MagicMock(spec=[u'a'])
mock_class.a = MagicMock(spec=[u'a'])
hasattr(mock_class.a, u'c') # returns False

此外,如果您有一些想要模拟的真实对象,可以做一些recursive autospecing .

关于python - 如何模拟缺失的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com