在mock.patch中调用origin函数

时间:2014-10-21 09:59:19

标签: python mocking

我有一个函数,我使用shutil.move将多个文件移动到另一个位置。当它失败时,我想打电话给一些清洁代码。所以我写了一个自动化测试,我有五个文件,我想在第三次调用shutil.move时引发一个Exception,并检查是否已完成清理。我的天真想法是:

def test_failed_processing_clean_ups_database(self):
    class LocalCounter:
        call_counter = 0

    def code_breaker(src, dst):
        LocalCounter.call_counter += 1
        if LocalCounter.call_counter > 2:
            raise CodeBreakerException('Code made booom!')
        shutil.move(src, dst)

    with mock.patch('dashboard.tasks.shutil.move') as mck:
        mck.side_effect = code_breaker
        my_processing_code_that_uses_shutil_move()
    # check if clean...

但这不起作用。 shutil.move也在code_breaker函数中修补,因此它会被堆叠。我需要调用原始的shutil.move,因为其他事情取决于此。有什么建议怎么做?谢谢!

0 个答案:

没有答案