测试Django模拟 - 检查函数/方法调用
问题描述:
我想检查do_a调用do_b。我在做这样的:测试Django模拟 - 检查函数/方法调用
代码:
def do_a(...):
...
do_b(...)
...
测试:
def test_do_a(self):
...
with patch('...do_b', new_callable=do_nothing()) as mock_do_b:
do_a(...)
mock_do_b.assert_called_once_with(...)
而且do_nothing:
def do_nothing():
pass
这是工作正常,但我不得不使用do_nothing(),我觉得哈克。有没有办法做同样的测试没有额外的无用函数do_nothing()?
答
您可以使用补丁作为装饰
@patch('...do_b')
def test_do_a(self, mock_do_b):
do_a(...)
mock_do_b.assert_called_once_with(...)
+0
谢谢,但不会删除do_nothing()或lambda:True的需要。 – 2014-09-29 23:20:51
+0
也许这是一个版本问题 - 只是添加相同的问题,这是工作。此外,'return_value'而不是'new_callable'也能做到这一点。 – 2016-09-19 01:57:28
你可以使用,而不是一个可调用'拉姆达拉姆达:TRUE'但拉姆达似乎更hackish的;) – 2014-09-29 08:10:13
是的,我想到了这一点。我可能只是写patch_with_nothing(...) – 2014-09-29 23:20:08