python - 在python中一起调用两个函数调用时如何修补它们
问题描述
我有一个使用下面代码的函数。
def get_doc_hash(doc):
return hashlib.md5(doc.encode(‘utf-8’)).hexdigest()
如何模拟 md5() 和 hexdigest() 的调用来为这个函数编写测试用例?
解决方案
正如评论中所指出的,最好测试预期的行为,但纯粹是为了展示如何链接模拟,这里是如何完成的:
import hashlib
import unittest
from unittest.mock import patch
def get_doc_hash(doc):
return hashlib.md5(doc.encode("utf-8")).hexdigest()
class TestHash(unittest.TestCase):
@patch('hashlib.md5')
def test_get_doc_hash_to_demonstrate_mock_chaining(self, mock_hashlib):
mock_hashlib.return_value.hexdigest.return_value = "digested"
hash_out = get_doc_hash("test doc")
mock_hashlib.assert_called_once_with("test doc".encode("utf-8"))
mock_hashlib.return_value.hexdigest.assert_called_once()
self.assertEqual(hash_out, "digested")
推荐阅读
- javascript - 在 React 中将 2 个渲染合并为 1 个渲染
- rebus - Rebus OneWayClient 如果不存在则创建队列
- javascript - 如何使用 vaadin 路由器(客户端)提供静态 html 页面?
- c# - 组件发射器c#上的多个变量
- .net - 在 .NET Standard 类库中嵌入 UI 组件是一种好习惯吗?
- vue.js - 在存储之外改变 vuex 状态对象
- c# - 防护等级问题,必须公开
- mongodb - 拉出对象数组并从数组中使用它们的字段(MongoDB 聚合框架)
- python - 在不使用 sys.exit() 的情况下在 Mac 上退出 Tkinter GUI 的可靠方法
- angular - 如何减少 mat-grid-list 的每个 mat-grid-tile 之间的空间?