我有一个正在测试的类,该类具有依赖关系的另一个类(该类的实例被传递给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”语义?
尝试 side_effect
def my_side_effect(*args, **kwargs):
if args[0] == 42:
return "Called with 42"
elif args[0] == 43:
return "Called with 43"
elif kwargs['foo'] == 7:
return "Foo is seven"
mockobj.mockmethod.side_effect = my_side_effect
我在使用Java方法时遇到了麻烦。这段代码应该有三种方法。方法1)输入员工人数。方法2)输入每个员工缺勤天数。方法3)计算缺勤天数的平均值。然后,在Main中,应该打印员工人数、缺勤天数和平均缺勤天数。显然,我不明白方法是如何工作的,因为当我运行代码时,用户在提供员工人数、缺勤天数和平均缺勤天数之前,会被询问4倍的员工人数和2倍的员工缺勤天数。如何更改代码,以便用户只需输入一次信息?
问题内容: 我想我在这里描述的可能有个名字,但我不知道。所以我的第一个问题是要知道这种技术的名称。 这是一个示例:假设您正在网页上实现实时搜索。每次用户在搜索框中键入内容时,您都会触发一个新的搜索查询,并且结果会尽可能频繁地更新。这是一件愚蠢的事情,因为您发送的查询会超出实际需要。每2-3个字母发送一次请求,或者每100 ms最多发送一次请求就足够了。 因此,一种技术是安排在键入键之后立即执行的查
我们正在从SQLite db加载大量数据,并使用IntentService。 有一个活动在加载完成时从IntentService接收广播。当试图在IntentService完成之前启动活动时,方法会被多次调用。 sendPersonListBroadcast();
所以我有一个用于片段的容器,称为“容器”,它是一个FrameLayout。 在这个容器中,我使用名为CollectionsFragment的视页放置了一个片段。 null 我正在使用一个FragmentStatePagerAdapter,并将CollectionsFragment的getChildFragmentManager()传递给适配器。 我还有一个用于活动容器的onBackstackCha
我在命名空间