用mock和patch进行单元测试

时间:2016-10-01 20:14:42

标签: python python-2.7 unit-testing monkeypatching

我正在为函数f编写单元测试,它导入单元测试没有(直接)与之交互的其他函数/类。有什么方法可以从单元测试中修补这些功能(可能在set_up()中)?

供参考,我使用的是Python 2.7。

从unittest,我想修改/修补helper的行为。

在unittest文件中:

def test_some_function():
    assert(some_function() == True)

在some_function()定义中

import helper
def some_function():
    foo = helper.do_something()
    return foo & bar

1 个答案:

答案 0 :(得分:1)

模拟模块是相当标准的并记录在案here。您将看到一个相当明确的示例,说明它是如何完成的。

此外,了解where to patch非常重要,以了解如何在其他脚本中正确模拟模块。

为了向您提供一个参考代码的更明确的示例,您希望执行以下操作:

import unittest
from unittest.mock import patch

import module_you_are_testing

class MyTest(unittest.TestCase):

    @patch('module_you_are_testing.helper')
    def test_some_function(self, helper_mock):
        helper_mock.do_something.return_value = "something"
        # do more of your testing things here

因此,在此需要记住的重要一点是,您正在引用helper与您正在测试的 相关联。查看我提供的示例代码,您将看到我们正在导入module_you_are_testing。所以,就是你嘲笑。