python-3.x - 有没有办法断言已在 unittest 模拟对象上设置了属性?

标签 python-3.x unit-testing testing python-unittest python-unittest.mock

在下面的代码中,有没有办法断言 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/

相关文章:

Windows 上的 python libclang 绑定(bind)无法从 sublime text 初始化翻译单元

javascript - Karma-Jasmine:意外的请求:GET…预期没有其他请求

ruby - Cucumber - 多语言网站的功能

python - Tkinter wm_attributes 没有 Linux 中的所有选项

python - 在 django 中处理零行时 filter().update() 的最佳方法?

silverlight - Lighthouse(Silverlight Unit Test Runner)挂起然后不执行任何测试——为什么?

安卓测试 : No tests found

c++ - 如何测试某些代码不能用 C++ 编译?

python-3.x - __ipow__ 在左侧对象返回 NotImplemented 时引发 TypeError

javascript - 抑制 Karma 中的堆栈跟踪 (AngularJS)