在下面的代码中,如果 search 是一个模拟对象,是否可以断言该query
属性已设置?或者如果query
是模拟对象,有没有办法做到这一点?
search.query = Q('bool', must=must)
到目前为止,我发现 Python unittest.mock 仅支持断言模拟已被称为函数。此外setattr魔术方法不能被模拟,因此search.__setattr__
不能用于断言上述内容。
在下面的代码中,如果 search 是一个模拟对象,是否可以断言该query
属性已设置?或者如果query
是模拟对象,有没有办法做到这一点?
search.query = Q('bool', must=must)
到目前为止,我发现 Python unittest.mock 仅支持断言模拟已被称为函数。此外setattr魔术方法不能被模拟,因此search.__setattr__
不能用于断言上述内容。
也许我误解了你的意思,但为什么不简单地运行被测代码,然后检查是否search
具有预期的属性query
并search.query
保持预期值?例如(我分配search
了一个MagicMock
对象,因为根据您的描述,它可能必须是。对于以下示例,不需要search
是 aMagicMock
或任何类型的模拟):
# setup
search = MagicMock()
# when exercised, your code under test would do:
search.query = 42
# afterwards you validate that search.query holds the value you expect:
self.assertTrue(hasattr(search, 'query'))
self.assertEqual(search.query, 42)