700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python单元测试mock_单元测试-具有多次调用方法的Python Mock对象

python单元测试mock_单元测试-具有多次调用方法的Python Mock对象

时间:2022-10-08 02:43:14

相关推荐

python单元测试mock_单元测试-具有多次调用方法的Python Mock对象

我有一个正在测试的类,该类具有依赖关系的另一个类(该类的实例被传递给CUT的init方法)。 我想使用Python Mock库来模拟此类。

我所拥有的是这样的:

mockobj = Mock(spec=MyDependencyClass)

mockobj.methodfromdepclass.return_value = "the value I want the mock to return"

assertTrue(mockobj.methodfromdepclass(42), "the value I want the mock to return")

cutobj = ClassUnderTest(mockobj)

没关系,但是“ methodfromdepclass”是参数化的方法,因此我想创建一个单独的模拟对象,其中根据将哪些参数传递给methodfromdepclass来返回不同的值。

我想要此参数化行为的原因是我想创建ClassUnderTest的多个实例,这些实例包含不同的值(其值由从嘲笑对象返回的值产生)。

Kinda我在想什么(这当然行不通):

mockobj = Mock(spec=MyDependencyClass)

mockobj.methodfromdepclass.ifcalledwith(42).return_value = "you called me with arg 42"

mockobj.methodfromdepclass.ifcalledwith(99).return_value = "you called me with arg 99"

assertTrue(mockobj.methodfromdepclass(42), "you called me with arg 42")

assertTrue(mockobj.methodfromdepclass(99), "you called me with arg 99")

cutinst1 = ClassUnderTest(mockobj, 42)

cutinst2 = ClassUnderTest(mockobj, 99)

# now cutinst1 & cutinst2 contain different values

如何实现这种“ ifwithwith”语义?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。