如何为单元测试期间调用的方法提供默认返回值python

如何为单元测试期间调用的方法提供默认返回值python,python,Python,下面是一个示例类,它简化了我所拥有的: class.py 现在我正在为checkConfiguration做一个单元测试: classTest.py 原始的CheckConfiguration调用getDictionary。有没有办法告诉test\u CheckConfiguration(self)如果调用了getDictionary,它会自动返回一个我可以输入的字典? 比如: def test_CheckConfiguration(self): if method ge

下面是一个示例类,它简化了我所拥有的:

class.py

现在我正在为
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()