python - Python 测试:如何在测试范围之外进行模拟?
问题描述
目前正在处理一些遗留的python代码。我需要测试其中一项功能,function foo
. foo
现在要做到这一点,我需要模拟由which is调用的另一个函数给出的返回值function bar
。
然而,这两个都在我的测试包之外,当我尝试模拟时bar
,foo
不受影响。有没有办法做到这一点而不把所有东西都移到一个类中?(这是首选,但它是遗留代码)。
解决方案
一个简单的例子:
foo_and_bar_package/foo_and_bar_module.py
def bar():
return 5
def foo():
return 2 * bar()
test_foo_and_bar_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)
推荐阅读
- asp.net - 当函数 page_load Avoke 时如何不丢失 asp.net 中的表值
- c# - 在 C# 中使用 DialogBox() user32.dll 函数
- python - BeautifulSoup4 [] 输出错误
- sikuli - sikuli - 通过sikuli打开的windows应用程序以最小化方式打开,如何解决?
- c# - ECDSA 登录 c# 在 c 中验证
- events - DataCollector 和 EventSubscriberInterface 如何通信
- c# - 如何选择和复制 RDLC 文件中的文本?
- html - 删除 wordpress 网站链接上的下划线。文字装饰:无;不工作
- spring-integration - Spring Cloud Dataflow Sink App 中的 AvroSchema 消息转换
- android - Android Dagger2 共享管理器类