Python测试:如何在测试范围之外进行模拟?

2024-04-25 05:47:57 发布

您现在位置:Python中文网/ 问答频道 /正文

目前正在处理一些遗留的python代码。我需要测试其中一个函数function foo。现在要做到这一点,我需要模拟另一个由foo调用的函数所给出的返回值,即function bar

然而,这两个都在我的测试包之外,当我试图模仿bar时,foo不受影响。有没有一种方法可以做到这一点而不把所有的东西都放到一个类中(这是首选,但它是遗留代码)


Tags: 方法函数代码foobarfunction返回值
1条回答
网友
1楼 · 发布于 2024-04-25 05:47:57

一个简单的例子:

foo\ u and\ u bar\包/foo\ u and\ u bar\模块.py

def bar():
    return 5


def foo():
    return 2 * bar()

测试\u foo\u和\u bar\u module.py

from unittest import TestCase
from unittest.mock import patch

from foo_and_bar_package.foo_and_bar_module import foo


class TestFoo(TestCase):
    @patch('foo_and_bar_package.foo_and_bar_module.bar')
    def test_foo(self, mock_bar):
        mock_bar.return_value = 2
        self.assertEqual(foo.foo(), 2 * mock_bar.return_value)

相关问题 更多 >