Cor*_*gan 10 python unit-testing mocking stub
我是一个C#dev进入一些Python的东西,所以我不知道我现在在做什么.我已经读过你不需要使用Python的依赖注入.我被告知你可以在代码中实例化对象并让它们以你想要的方式运行,但是,你可以将这些对象上的方法指向我自己的测试中定义的存根 - 据说没有模拟.
这是真的?我试过这样做,并不能让它工作.这实际上是怎么做到的?如何在没有模拟库的情况下在Python中存根方法?
Pet*_*ons 28
这是一个基本的例子.请注意,永远不会调用生产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()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10514 次 |
最近记录: |