在下面的代码中,有没有办法断言 query
如果搜索是模拟对象,则已设置属性?或者如果 query
是模拟对象,有没有办法做到这一点?
search.query = Q('bool', must=must)
到目前为止,我发现 Python unittest.mock 只支持断言模拟已被称为函数。还有 setattr 魔术方法不能被 mock
search.__setattr__
不能用于断言上述内容。
最佳答案
也许我误解了你的意思,但为什么不简单地运行被测代码,然后检查 search
得到了预期的属性 query
还有那个search.query
持有期望值?例如(我分配了 search
一个 MagicMock
对象,因为根据你的描述它可能必须是。为了下面的例子,search
不一定是 MagicMock
或任何类型的模拟):
# 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)
关于python-3.x - 有没有办法断言已在 unittest 模拟对象上设置了属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60332802/