Hacker News new | past | comments | ask | show | jobs | submit login

At risk of bikeshedding, I think the "most pythonic" approach would be mock(obj, x=1, y=2)

Seriously though, cool lib, thanks for it =)

Yes, the most pythonic is:

  mock(obj, x=1, y=2)
Which you get by:

  def __init__(self, obj, **mocks):
      self.obj = obj
      self.mocks = mocks
This can then also be called (using the built-in double-star-unpacking feature) as:

  mock(obj, **{'x': 1, 'y': 2})
or even

  mock(obj, **dict([('x', 1), ('y', 2)]))
Then there’s no explicit need to support multiple alternative function signatures, and in particular you don’t get people using the (quite atypical and therefore semantically ambiguous):

  mock(obj, 'x', 1, 'y', 2).

Thanks, updated the code to use keyword arguments only.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact