我有以下形式的功能:
def my_function(arg):
f = get_anonymous_function(arg)
return f()
我想在mockito
中使用py.test
来测试此功能。
所以我按如下方式编写测试:
def test_my_function(when):
arg = mock()
f = mock()
when(my_module).get_anonymous_function(arg).thenReturn(f)
expected = mock()
when(f).thenReturn(expected)
actual = my_module.my_function(arg)
assert expected == actual
当我进行此类测试时,actual
为None
。如果我将when
更改为when2
,则Mockito会抱怨TypeError: can't guess origin of 'f'.
我的临时解决方案是使用f = lambda: return expected
,然后跳过第二个when
。这有效,但感觉不太对劲。还有更好的方法吗?
my_function
更好”不是一种选择,因为在使用外部包时会出现这种情况。
答案 0 :(得分:0)
想出来。来自documentation(已更正拼写错误):
默认情况下,模拟可以调用。使用配置可调用行为 当:
dummy = mock() when(dummy).__call__(1).thenReturn(2)