FlexMock provides a mock/stub/spy library for Python.

It is inspired by Ruby's FlexMock, however full feature parity with
the Ruby version is not a goal. Python FlexMock omits a number of things in the
Ruby version, mainly various shortcuts for existing functionality,
and implements a number of things that Ruby's FlexMock
doesn't support, such as proxying/spying and matching arguments using their classes
in addition to values.

What makes FlexMock unique in the Python testing world is its automatic integration
with the test runner, allowing for really terse syntax and avoiding both the
action->assertion and record->replay paradigms supported by all the other Python
mocking libraries currently available. To be sure, you can still write your
assertions in the action->assertion mode using FlexMock, but its powerful syntax
allows you to define both the expectation and the assertion at the same time.

SUPPORTS:

- test runner integration, i.e. automatic expectation checking on tearDown
- advanced argument matching, including matching types and user-defined classes
- expectations on number of times called, including at_least/at_most modifiers
- mocks returning custom values, including different values on successive invokations
- mocks raising custom exceptions
- simple syntax for generating new mock objects
- overriding new instances (on new-style objects)
- parameter shortcuts for even terser syntax
- proxying/spying using the and_execute expectation modifier
- mocking a generator using and_yield
- easy mocking of private methods
- enforcing expectations call ordering

INSTALL:

$ sudo python setup.py install

DOCUMENTATION:

Usage documentation is available online:

https://github.com/has207/flexmock/wiki/Documentation

For API docs, generate the pydoc:

$ pydoc -w flexmock

TESTED WITH:

- python 2.4.4 on OSX
- python 2.5 on OSX
- python 2.6 on OSX
- python 3.1.2 on OSX
- should work with other versions and platforms

To report bugs or file feature requests:

https://github.com/has207/flexmock/issues
