我使用Python 2.6.5用模擬0.7.2,並有在那裏我使用補丁裝飾的一類單元測試。初始化參數與修補程序和模擬用的urllib2
@patch('urllib2.Request')
def test_do_my_call(self, MockClass):
"""will test that _do_my_call is getting called with correct values"""
instance = MockClass.return_value
mock_urlopen = Mock()
mock_urlopen.return_value = 'foo'
urllib2.urlopen = mock_urlopen
response = do_something('MyData')
self.assertEqual(mock_urlopen.call_count, 1)
self.assertEqual(response, 'foo')
上面的代碼通過,它驗證urlopen至少被調用,但它仍然有點弱。
的「do_something」方法創建新的請求(因此需要補丁),然後用它調用的urlopen(和如上述我注意到驗證它被調用)。但是,我想知道是否有方法來測試從「do_something」中傳遞給urllib2.Request()的參數。例如,do_something是否傳遞了正確的/期望的url和正確的/期望的頭文件?
這可能嗎?
是的... grncdr是一個很好的觀點。但是,我選擇這個作爲答案,因爲它可能有助於某人。我做錯了什麼是試圖測試「實例」。應該一直在「MockClass」上做。謝謝! –