【发布时间】:2019-06-06 13:35:09
【问题描述】:
我有以下模块,我正在尝试为其编写单元测试。
import myModuleWithCtxMgr
def myFunc(arg1):
with myModuleWithCtxMgr.ctxMgr() as ctxMgr:
result = ctxMgr.someFunc()
if result:
return True, result
return False, None
我正在处理的单元测试如下所示。
import mock
import unittest
import myModule as myModule
class MyUnitTests(unittest.TestCase):
@mock.patch("myModuleWithCtxMgr.ctxMgr")
def testMyFunc(self, mockFunc):
mockReturn = mock.MagicMock()
mockReturn.someFunc = mock.Mock(return_value="val")
mockFunc.return_value = mockReturn
result = myModule.myFunc("arg")
self.assertEqual(result, (True, "val"))
测试失败是因为 result[0] = magicMock() 而不是我配置的返回值(我想)。
我尝试了几种不同的测试变体,但我似乎无法模拟 ctxMgr.someFunc() 的返回值。有谁知道我如何做到这一点?
谢谢!
【问题讨论】:
标签: python-2.7 mocking python-mock