Python mock.patch不是在模拟我的函数吗?

Python mock.patch不是在模拟我的函数吗?,python,unit-testing,mocking,python-unittest,python-unittest.mock,Python,Unit Testing,Mocking,Python Unittest,Python Unittest.mock,所以我写了一个非常简单的测试用例和函数。我似乎想不出这个问题。有人有主意吗?我觉得应该行得通 import pandas import unittest from unittest import mock from unittest.mock import MagicMock, Mock def my_func(): temp = pandas.ExcelFile('temp.xlsx') return temp.parse() @mock.patch('pandas

所以我写了一个非常简单的测试用例和函数。我似乎想不出这个问题。有人有主意吗?我觉得应该行得通

import pandas
import unittest
from unittest import mock
from unittest.mock import MagicMock, Mock

def my_func():
    temp = pandas.ExcelFile('temp.xlsx')
    return temp.parse()    

@mock.patch('pandas.ExcelFile')
def test_func(pd):
    pd.parse.return_value = 10
    print(pd.parse())
    print(my_func())
输出仅给出以下结果:

10
<MagicMock name='ExcelFile().parse()' id='140620591125360'>
10

根据@MrBean-breme的评论提供完整的单元测试解决方案

索引_63929989.py

导入熊猫
def my_func():
temp=pandas.ExcelFile('temp.xlsx')
返回temp.parse()
测试索引\u 63929989.py

导入单元测试
从unittest导入模拟
从索引_63929989导入我的函数
类TestIndex(unittest.TestCase):
@mock.patch('pandas.ExcelFile')
def test_func(自我、模拟文件):
mock_pd_excelFile.return_value.parse.return_value=10
实际值=我的函数()
mock_pd_excelFile.assert_使用('temp.xlsx')调用_
自我评估资格(实际,10)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
unittest.main()
单元测试结果和覆盖率报告:

coverage run/Users/ldu020/workspace/github.com/mrdulin/python-codelab/src/stackoverflow/63929989/test_index_63929989.py&&coverage report-m--include=“src/*”
.
----------------------------------------------------------------------
在0.001s内运行1次测试
好啊
姓名Stmts未找到封面
---------------------------------------------------------------------------------
src/stackoverflow/63929989/index_63929989.py 4 0 100%
src/stackoverflow/63929989/test_index_63929989.py 11 0 100%
---------------------------------------------------------------------------------
总数150 100%

您需要
pd.return\u value.parse.return\u value=10
来引用
ExcelFile
实例,而不是类。@mrbeanbreen非常感谢!