我想要一个单元测试来断言函数中的变量 action
被设置为它的预期值,唯一使用这个变量的时间是在调用库时传递它.
Class Monolith(object):
def foo(self, raw_event):
action = # ... Parse Event
# Middle of function
lib.event.Event(METADATA, action)
# Continue on to use the build event.
我的想法是我可以模拟 lib.event.Event
,并获取其输入参数并断言它们具有特定值。
> 这不是模拟的工作方式吗?模拟文档的前后矛盾、不完整的示例以及过多与我想做的事情无关的示例让我感到沮丧。
最佳答案
您可以使用 call_args
或 call_args_list
一个简单的例子如下:
import mock
import unittest
class TestExample(unittest.TestCase):
@mock.patch('lib.event.Event')
def test_example1(self, event_mocked):
args, kwargs = event_mocked.call_args
args = event_mocked.call_args.args # alternatively
self.assertEqual(args, ['metadata_example', 'action_example'])
我只是为可能需要它的人快速编写了这个示例——我还没有实际测试过它,所以可能存在一些小错误。
关于Python单元测试模拟,获取模拟函数的输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31129350/