Pytest PropertyMock未返回不同的属性值
我正在尝试模拟一个对象的属性,让它在被调用时返回不同的值。目前我遇到的问题是
class A:
def __init__(self):
self.a1 = [1, 1]
self.a2 = [2, 2]
self.a3 = [3, 3]
def run(self):
for i in self.a2:
print(f"val in a2: {i}")
def test_A(mocker):
myObj = A()
myObj.a2 = mocker.PropertyMock(side_effect = [[2, 3], [3,4], [4,5]])
myObj.run()
这导致了一个错误:TypeError: 'PropertyMock' object is not iterable
1 个回答
0
我发现解决这个问题的方法是获取对象的类型,然后模拟这个类型的属性。所以解决方案就是
def test_A(mocker):
myObj = A()
type(myObj).a2 = mocker.PropertyMock(
side_effect=iter([[2, 3], [3, 4], [4, 5]])
)
myObj.run()