2012-06-01 28 views
0

我想第一次使用Python模擬模塊(使用pip下載)。我有問題設置斷言,我已經將範圍縮小到這樣的代碼:AssertionError「not called」on Python簡單模擬

class TestUsingMock(unittest.TestCase): 

    def setUp(self): 
     self.fake_client = mock.Mock() 

    def test_mock(self): 
     self.fake_client.copy = mock.Mock() 
     self.fake_client.copy("123") 
     self.fake_client.assert_called_with("123") 

if __name__ == "__main__": 
    unittest.main() 

這是我的錯誤:

F 
====================================================================== 
FAIL: test_mock (__main__.TestVCSDriver) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "./mock_test.py", line 17, in test_mock 
    self.fake_client.assert_called_with("123") 
    File "/Library/Python/2.6/site-packages/mock.py", line 859, in assert_called_with 
    raise AssertionError('Expected call: %s\nNot called' % (expected,)) 
AssertionError: Expected call: mock('123') 
Not called 

沒有斷言,一切工作正常。我究竟做錯了什麼?

回答

3

您正在調用對象self.fake_client.copy,但測試是否已調用另一個self.fake_client

無論是所謂的 「正確」 的對象:

self.fake_client("123") 
self.fake_client.assert_called_with("123") 

或測試copy

self.fake_client.copy("123") 
self.fake_client.copy.assert_called_with("123") 
+0

你的第二個例子是我故意的,感謝您的幫助! – seanhodges