2011-04-10 45 views
2

我会先发布一些代码,以便更清楚。Python模拟:带补丁和return_value的意外结果

我的类:

from tools import get_knife, sharpen 

class Banana(object): 
    def chop(self): 
     knife = get_knife() 
     sharpen(knife) 

我的测试:

from mock import patch, sentinel 
from banana import Banana 

class TestBanana(unittest.TestCase): 

    @patch('banana.get_knife') 
    @patch('banana.sharpen') 
    def test_chop(self, get_knife_mock, sharpen_mock): 
     get_knife_mock.return_value = sentinel.knife 
     Banana().chop() 
     sharpen_mock.assert_called_with(sentinel.knife) 

这个测试将失败,因为sharpen_mock没有与get_knife_mock的RETURN_VALUE调用。

回答