【发布时间】:2020-01-24 08:08:08
【问题描述】:
我正在尝试在 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
显然这不是根据配置模拟多个属性的适当方法,如上所示?有人可以告诉我如何最好地实现这一点,谢谢!
【问题讨论】:
-
cases.values()?它是一个字典列表 -
pytest 遍历每个案例
标签: python unit-testing mocking pytest