One neat feature which Mocker offers is the ability to very easily implement custom behavior on specific functions or methods.
Take for instance the case where you want to pretend to some code that a given file exists, but you don’t want to get on the way of everything else which needs the same function:
>>> from mocker import * >>> mocker = Mocker() >>> isfile = mocker.replace("os.path.isfile", count=False) >>> _ = expect(isfile("/non/existent")).result(True) >>> _ = expect(isfile(ANY)).passthrough() >>> mocker.replay() >>> import os >>> os.path.isfile("/non/existent") True >>> os.path.isfile("/etc/passwd") True >>> os.path.isfile("/other") False >>> mocker.restore() >>> os.path.isfile("/non/existent") False
Notice that the count=False parameter is available in version 0.9.2. Without it Mocker will act in a more mocking-strict way and enforce that the given expressions should be executed precisely the given number of times (which defaults to one, and may be modified with the count() method).