使用模拟和补丁进行单元测试
Unit testing with mock and patch
我正在为一个函数 f 编写单元测试,它导入单元测试不(直接)与之交互的其他 functions/classes。有什么方法可以从单元测试中修补这些函数(可能在 set_up() 中)?
作为参考,我使用的是 Python 2.7.
从单元测试开始,我想modify/patch helper 的行为。
在单元测试文件中:
def test_some_function():
assert(some_function() == True)
在some_function()定义中
import helper
def some_function():
foo = helper.do_something()
return foo & bar
模拟模块是相当标准的并且有文档记录 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
。所以,你嘲笑的是 。
我正在为一个函数 f 编写单元测试,它导入单元测试不(直接)与之交互的其他 functions/classes。有什么方法可以从单元测试中修补这些函数(可能在 set_up() 中)?
作为参考,我使用的是 Python 2.7.
从单元测试开始,我想modify/patch helper 的行为。
在单元测试文件中:
def test_some_function():
assert(some_function() == True)
在some_function()定义中
import helper
def some_function():
foo = helper.do_something()
return foo & bar
模拟模块是相当标准的并且有文档记录 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
。所以,你嘲笑的是 。