gpt4 book ai didi

Python:如何实现多个动态mock.patch函数?

转载 作者:行者123 更新时间:2023-12-01 07:13:56 25 4
gpt4 key购买 nike

我正在尝试动态模拟/修补 python 中类的多个 @property 方法,即

class Dog():
...

@property
def size(self):
.....

@property
def breed(self):
.....


cases = [{"size":9, "breed":"doberman"}, {"size":2, "breed":"pug"}]

@pytest.mark.parametrize("case", list(cases.values()), ids=list(cases.keys()))
def test_properties(case):

dog = Dog()
mocks = ()

for m, v in case.items():
mocks += (mock.patch.object(dog, m, return_value=v),)

with mocks:
...

但是,我收到以下错误:

      with mocks:

E AttributeError: enter

显然这不是根据上面所示的配置模拟多个属性的适当方法?有人可以建议我如何最好地实现这一目标,谢谢!

最佳答案

对您来说最简单的选择是使用contextlib.ExitStack:https://docs.python.org/3/library/contextlib.html#supporting-a-variable-number-of-context-managers

另一个选择是使用 pytest 的 monkeypatch 固定装置:https://docs.pytest.org/en/latest/monkeypatch.html

关于Python:如何实现多个动态mock.patch函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58076251/

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