【问题标题】:Is there a way to assert that an attribute has been set on a unittest mock object?有没有办法断言已在 unittest 模拟对象上设置了属性?
【发布时间】:2020-02-21 05:43:54
【问题描述】:

在下面的代码中,如果 search 是一个模拟对象,有没有办法断言 query 属性已设置?或者如果query 是模拟对象,有没有办法做到这一点?

search.query = Q('bool', must=must)

到目前为止,我发现 Python unittest.mock 仅支持断言模拟已被称为函数。另外 setattr 魔术方法不能被模拟,所以search.__setattr__ 不能用于断言上述内容。

【问题讨论】:

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


    【解决方案1】:

    也许我误解了你的意思,但为什么不简单地运行被测代码,然后检查search 是否具有预期属性query 并且search.query 是否具有预期值?例如(我将search 分配给MagicMock object,因为根据您的描述,它可能必须是。对于以下示例,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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      相关资源
      最近更新 更多