如何为单元测试期间调用的方法提供默认返回值python
下面是一个示例类,它简化了我所拥有的: class.py 现在我正在为如何为单元测试期间调用的方法提供默认返回值python,python,Python,下面是一个示例类,它简化了我所拥有的: class.py 现在我正在为checkConfiguration做一个单元测试: classTest.py 原始的CheckConfiguration调用getDictionary。有没有办法告诉test\u CheckConfiguration(self)如果调用了getDictionary,它会自动返回一个我可以输入的字典? 比如: def test_CheckConfiguration(self): if method ge
checkConfiguration
做一个单元测试:
classTest.py
原始的CheckConfiguration
调用getDictionary
。有没有办法告诉test\u CheckConfiguration(self)
如果调用了getDictionary
,它会自动返回一个我可以输入的字典?
比如:
def test_CheckConfiguration(self):
if method getDictionary is called:
return {'a':123, 'b':22}
checkValue = self.classTest.checkConfiguration()
我知道这在Java中是可能的,尽管我在这方面没有足够的经验。
多谢各位 我认为你需要一个模拟框架。我建议 以下是您可以如何使用它: classTest.py
建议对测试中的类进行子类化,并重写
\uuu getattribute\uuu
,以您需要的任何方式记录每个调用。不确定还有什么可以用…classTest
是setUp()
的本地测试。我想你的意思是self.classTest=class.MyClass()
。是的,我知道。我现在要更改:)因为getDictionary
是一个静态方法,所以你应该使用MyClass.getDictionary
而不是self.getDictionary
来让你的代码更清晰。是的,这就是我想要的,mocking这个词。我将尝试使用Python附带的unittest.mock库,希望它能很好地工作:)
import class
import unittest
class TestMyClass(unittest.TestCase):
def setUp(self):
self.classTest = class.MyClass()
def test_CheckConfiguration(self):
#What to put here?
def test_CheckConfiguration(self):
if method getDictionary is called:
return {'a':123, 'b':22}
checkValue = self.classTest.checkConfiguration()
import class
import pymock
import unittest
class TestMyClass(pymock.PyMockTestCase):
def setUp(self):
self.classTest = class.MyClass()
def test_CheckConfiguration(self):
self.override(self.classTest, 'getDictionary')
pymock.expectAndReturn(self.classTest.getDictionary(), {'a':123, 'b':22})
self.replay()
checkValue = self.classTest.checkConfiguration()
self.verify()