如何解决Python的mock.patch不嘲笑我的功能?
所以我写了一个非常简单的测试用例和函数。我似乎无法找出问题所在。有人有主意吗?我觉得应该可以。
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'>
解决方法
根据@MrBean Bremen的评论提供完整的单元测试解决方案。
index_63929989.py
:
import pandas
def my_func():
temp = pandas.ExcelFile('temp.xlsx')
return temp.parse()
test_index_63929989.py
:
import unittest
from unittest import mock
from index_63929989 import my_func
class TestIndex(unittest.TestCase):
@mock.patch('pandas.ExcelFile')
def test_func(self,mock_pd_excelFile):
mock_pd_excelFile.return_value.parse.return_value = 10
actual = my_func()
mock_pd_excelFile.assert_called_with('temp.xlsx')
self.assertEqual(actual,10)
if __name__ == '__main__':
unittest.main()
具有覆盖率报告的单元测试结果:
coverage run /Users/ldu020/workspace/github.com/mrdulin/python-codelab/src/stackoverflow/63929989/test_index_63929989.py && coverage report -m --include="src/*"
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
Name Stmts Miss Cover Missing
---------------------------------------------------------------------------------
src/stackoverflow/63929989/index_63929989.py 4 0 100%
src/stackoverflow/63929989/test_index_63929989.py 11 0 100%
---------------------------------------------------------------------------------
TOTAL 15 0 100%
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。