下面是一個基本的例子。請注意,生產getData()方法永遠不會被調用。它被嘲笑了一個存根。
import unittest
class ClassIWantToTest(object):
def getData(self):
print "PRODUCTION getData called"
return "Production code that gets data from server or data file"
def getDataLength(self):
return len(self.getData())
class TestClassIWantToTest(unittest.TestCase):
def testGetDataLength(self):
def mockGetData(self):
print "MOCK getData called"
return "1234"
origGetData = ClassIWantToTest.getData
try:
ClassIWantToTest.getData = mockGetData
myObj = ClassIWantToTest()
self.assertEqual(4, myObj.getDataLength())
finally:
ClassIWantToTest.getData = origGetData
if __name__ == "__main__":
unittest.main()
謝謝彼得。這是我正在尋找的。 – 2010-10-12 01:49:52
這正是我所期待的,但我認爲這會更難=) – Sean 2011-01-13 06:49:04