在Python中,如何将原始参数获取到mocked obj的构造函数

2024-10-02 02:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,由于测试代码可以访问模拟对象,如何从中获取被测代码在构造它时传递的参数?在

这是一个经过提炼的例子来说明我要做的事情。我不知道该怎么做才是正确的。在

from unittest import mock

# Under test:
class Foo(object):
  def __init__(self, x):
    self._x = x
  def compute():
    return hash(self._x)
def computeFoo():
  return Foo("abc").compute() + Foo("def").compute()

# Test:
class MockFoo(mock.MagicMock):
  def compute(self):
    # TODO: How to get the value x which was passed to the Foo constructor?
    if self._x == "abc":
      return 0
    return 1
if __name__ == "__main__":
  m = MockFoo()
  mock.patch(__name__ + ".Foo", return_value=m).start()
  assert computeFoo() == 1

谢谢你的帮助。在


Tags: thetonameselfreturniffoovalue

热门问题