首页 > 解决方案 > 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()

标签: python-unittest.mock

解决方案


推荐阅读