首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在python中使用unitest模拟类方法

无法在python中使用unitest模拟类方法
EN

Stack Overflow用户
提问于 2016-09-22 19:33:24
回答 1查看 664关注 0票数 1

模块a.ClassA

代码语言:javascript
复制
class ClassA():
    def __init__(self,callingString):
        print callingString

    def functionInClassA(self,val):
        return val

模块b.ClassB

代码语言:javascript
复制
from a.ClassA import ClassA

class ClassB():
    def __init__(self,val):
        self.value=val

    def functionInsideClassB(self):
        obj=ClassA("Calling From Class B")
        value=obj.functionInClassA(self.value)

Python unittest

代码语言:javascript
复制
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")

断言失败。我到底哪里出错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-22 19:38:45

您分配给return_value两次:

代码语言:javascript
复制
classAmock.return_value=dummyMock
classAmock.return_value=Mock()

第二个赋值完全取消了设置dummyMock的工作;新的Mock实例没有设置functionInClassA属性。

您不需要创建新的模拟对象;只需使用默认的return_value属性值:

代码语言:javascript
复制
class Test(unittest.TestCase):
    @patch('b.ClassB.ClassA', autospec=True)
    def test_sample(self, classAmock):
        instance = classAmock.return_value
        instance.functionInClassA.return_value = "mocking functionInClassA"

        obj = ClassB("dummy_val")
        obj.functionInsideClassB()

        instance.functionInClassA.assert_called_once_with("dummy_val")

您可以使用而不是来断言assert_called_once_with()的返回值,因为它始终是None (使额外的assert失败,总是失败)。将断言留给assert_called_once_with()方法,它将根据需要引发。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39647480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档