2024-05-17 06:24:45 发布
网友
假设我有课:
class A(): def f(self): self._v = 1
尝试过:
m=Mocker() A.f._v = m.mock() ...
但没用。不知道怎么。。。
你是说Mock library?
from mock import Mock real = ProductionClass() real.method = Mock(return_value=3) real.method(3, 4, 5, key='value')
编辑:
你在模仿之前试图进入A.f.\U v,这是不可能的。 不知道你想做什么,但这会奏效的
>>>A.f = Mock() >>>a = A() >>>a.f._v <Mock name='mock._v' id='42076240'>
类定义显示了一个实例变量,用于从类外部设置该变量,请执行以下操作:
class A: def f(self): self._v = 1 a = A() a._v = Mock()
如果您确实需要一个真正的类变量,请尝试以下操作:
class A(): _v = None def f(self): self.__class__._v = 1 A._v = Mock()
我尝试了以上的解决方案,但仍然不能解决我的目的,这正是最初所要求的。上面的方法将更新类的mocked属性,使其值为。
我的要求是从我在单元测试类中提供的模拟值设置属性值。
我最终可以通过以下方法解决这个问题。如果不正确,请告诉我:
实际等级:
class ActualClass(object): name='' def some_method(self): name=get_name_from_external_source() #Say, returned name='ActualValue' print name
单元测试等级:
from mock import PropertyMock import unittest class TestActualClass(unittest.TestCase): def test_some_method(self): actual_class=ActualClass() p=PropertyMock(return_value='Mocked_Name') type(actual_class).name=p actual_class.some_method()
当您通过正常执行在ActualClass中运行某个_方法时,输出:
ActualValue
运行TestActualClass时,输出:
Mocked_Name
这意味着类属性是使用PropertyType的模拟值模拟的,您可以使用模拟值测试方法,而不必担心外部源方法调用。
你是说Mock library?
编辑:
你在模仿之前试图进入A.f.\U v,这是不可能的。 不知道你想做什么,但这会奏效的
类定义显示了一个实例变量,用于从类外部设置该变量,请执行以下操作:
如果您确实需要一个真正的类变量,请尝试以下操作:
我尝试了以上的解决方案,但仍然不能解决我的目的,这正是最初所要求的。上面的方法将更新类的mocked属性,使其值为。
我的要求是从我在单元测试类中提供的模拟值设置属性值。
我最终可以通过以下方法解决这个问题。如果不正确,请告诉我:
实际等级:
单元测试等级:
当您通过正常执行在ActualClass中运行某个_方法时,输出:
运行TestActualClass时,输出:
这意味着类属性是使用PropertyType的模拟值模拟的,您可以使用模拟值测试方法,而不必担心外部源方法调用。
相关问题 更多 >
编程相关推荐