模拟子对象中的返回值

时间:2015-07-31 08:40:00

标签: python unit-testing testing mocking

我想为复杂数据结构中的功能编写测试用例。该功能不依赖于所有数据,并且获得具有所需属性的实际实例很难。因此,我正在使用Mocks。

 URL=http://safetracker-threetinker.rhcloud.com/api/${userid}/locations?lat=${latitude}&lng={longitude}

def test_Case: t1 = Timeseries(...) # Data t2 = Timeseries(...) # Data fancy_t1 = Mock(data=d1, additional_property= ...) fancy_t2 = Mock(data=d2, additional_property= ...) container = Mock(data_sets=[fancy_t1, fancy_t2]) ret = function_to_test(container) assert ret ... # Some condition 内,可以调用

形式
function_to_test

我希望container.aggregation.aggregate(fancy_t, more_arguments1, more_arguments2, ... ) 调用的操作非常简单。它应该评估为aggregation.aggregate(时间序列)并忽略t1+t2和其他参数。

我该怎么做?

如果我这样做

fancy_t

它评估为agg = Mock() agg.return_value = d1 + d2 container.aggregation.get_aggregated_positions = agg 而不是时间序列。

1 个答案:

答案 0 :(得分:0)

类似的东西:

from mock import patch

with patch('package.container.aggregation.get_aggregated_positions', return_value=_fake_fnc()):
   ret = function_to_test(container)
   assert ret ... # Some condition

def _fake_fnc():
   return 0.0