python-unittest.mock - python mock patch 原始函数仍然被调用
问题描述
python unittest mock有点新。我有以下代码模拟了许多函数,然后测试并调用 main()。模拟项目是从 main 调用的。但是,即使单元测试成功运行,原始函数也会被调用。为什么会这样?
@patch('utilities.etl.load')
@patch('utilities.etl.get_joined_data')
@patch('utilities.etl.transform')
@patch('utilities.etl.extract_salary')
@patch('utilities.etl.extract')
@patch('utilities.helper.get_spark_session')
def test_main(self, mock_get_sparksession, mock_extract,
mock_salary, mock_transform,
mock_join, mock_load):
mock_get_sparksession.return_value = self.spark
mock_extract.return_value = self.test_extract
mock_salary.return_value = self.test_salary
mock_transform.return_value = self.test_transform
mock_join.return_value = self.test_join
mock_load.return_value = None
main.main()
解决方案
推荐阅读
- java - 只改变许多迭代中的一个
- reactjs - 使用 Lightsail 托管 NodeJs React 应用程序
- asp.net-core - 如何在 ASP.net core MVC 控制器的 ActionResult 中过滤模型中的数据?
- xml - XSL 循环遍历 XML 元素的属性,然后用连接的属性替换第一个元素
- javascript - 如何通过旧的 javascript 在 ubuntu 中调用 sleep 二进制文件?
- ruby-on-rails - 使用 sidekiq-cron 自动删除帖子
- python - Dash 获取会话对象变量会引发可怕的运行时错误
- ios - 无法注册捆绑标识符并且找不到配置文件?
- python-3.x - 从 dict 调用值以在数据框中创建布尔列
- javascript - 为什么我的 post 请求没有得到 readyState=4 和 status=200?