我具有表单的函数:
def my_function(arg):
f = get_anonymous_function(arg)
return f()
我想用py.test
在mockito
中测试此功能。
所以我写下测试如下:
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
。这有效,但感觉不太正确。有更好的方法吗?
ps:"不要使用Mockito"并不是我要寻找的答案。同样,"写my_function
更好"也不是一种选择,因为使用外部软件包时通常会出现这种情况。
弄清楚了。从文档(已纠正错别字(中:
模拟默认情况下是可可。使用可可的行为配置 时间:
dummy = mock() when(dummy).__call__(1).thenReturn(2)