我试图模拟嵌套函数调用的返回值。这应该很简单,但没用。 所以我有一个Car类,它有一个poweredBy()成员函数,返回Engine类的一个实例。 Engine类的成员getEngineType()返回字符串“BigandFast”
class Engine(object):
def engineType(self):
return 'BigandFast'
class Car(object):
def poweredBy(self):
return Engine()
所以:Car().poweredBy().engineType()返回'BigandFast'
我有一个函数getEngineType(),它获取一辆车并返回引擎类型:
def getEngineType(aCar):
return aCar.poweredBy().engineType()
我想模拟getEngineType()函数,以便更改结果:
@mock.patch('testing.scratch.mock_test.Car')
def mockedCar(mockedCar):
mockedCar.return_value.poweredBy.return_value.getEngineType.return_value = 'SmallAndSlow'
print getEngineType(mockedCar)
但这仍然返回“BigandFast”。线路:
mockedCar.return\u value.poweredBy.return\u value.getEngineType.return\u value='SmallAndSlow'
对我在调试器中看到的模拟对象没有任何影响。 所以我的问题是:
如何在mock中指定engineType()的返回值
如果这辆车没有被传进去,语法会有什么不同 getEngineType()作为参数,但在函数内部生成
由于您从一个Car类mock开始,并从那里设置
return_value
链,因此您需要实际实例化一个Car:输出:
因此,首先是Car类mock,然后是Car对象mock的返回值,然后是poweredBy方法mock,最后是engineType方法mock,最后是返回值
不幸的是,我可能没有在这里使用正确的词汇表,但是要点是:
mockedCar
是Car
类的模拟,您需要实例化它来访问您设置的return_value
相关问题 更多 >
编程相关推荐