我正在为函数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
答案 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
。所以,就是你嘲笑。