补丁 - 如何检查修补类的实例是否为类函数?

时间:2013-04-17 14:28:01

标签: python mocking patch

我正在尝试修补一个类,让一个正在测试的函数创建一个修补类的实例,让该实例调用一个类函数,然后我想测试那个类函数是否被调用。我怎么能这样做?

以下是我的代码的基本变体:

测试文件:

class TestChannel(unittest.TestCase):
    @patch("notification.models.Channel")
    def testAddChannelWithNamePutsChannel(self, *args):
        addChannelWithName("channel1")
        self.assertTrue(Channel.put.called)

要测试的代码:

def addChannelWithName(name):
    channel = Channel(name = name)
    channel.put()

基本上,我想测试一下channel.put()是否被调用。当然这段代码不起作用,因为我正在检查是否为实例调用类函数put(),但一般情况下。我需要在实例上调用它才能通过。我已经尝试了几种模拟Channel类不同部分的变体,它的返回值,但我似乎无法让它工作。我怎么能这样做?非常感谢!

1 个答案:

答案 0 :(得分:1)

如何让你的addChannelWithName函数返回Channel实例?

def addChannelWithName(name):
    channel = Channel(name = name)
    channel.put()
    return channel

class TestChannel(unittest.TestCase):
    @patch("notification.models.Channel")
    def testAddChannelWithNamePutsChannel(self, *args):
        channel = addChannelWithName("channel1")
        self.assertTrue(channel.put.called)