模块a.ClassA
:
class ClassA():
def __init__(self,callingString):
print callingString
def functionInClassA(self,val):
return val
模块b.ClassB
:
Pythonunittest
类
import unittest
from b.ClassB import ClassB
from mock import patch, Mock, PropertyMock,mock
class Test(unittest.TestCase):
@patch('b.ClassB.ClassA',autospec = True)
def _test_sample(self,classAmock):
dummyMock=Mock()
dummyMock.functionInClassA.return_value="mocking functionInClassA"
classAmock.return_value=dummyMock
obj=ClassB("dummy_val")
obj.functionInsideClassB()
assert dummyMock.functionInClassA.assert_called_once_with("dummy_val")
断言失败。我到底哪里错了?在
您分配给
return_value
两次:第二个赋值完全取消了设置
dummyMock
的工作;新的Mock
实例没有设置functionInClassA
属性。在您不需要创建新的模拟对象;只需使用默认的
^{pr2}$return_value
属性值:您不需要断言
assert_called_once_with()
的返回值,因为它总是None
(使您的额外的assert
总是失败的)。将断言留给assert_called_once_with()
方法,它将根据需要引发。在相关问题 更多 >
编程相关推荐