Changelog

This project follows semantic versioning.

Types of changes:

  • Added: New features.

  • Changed: Changes in existing functionality.

  • Deprecated: Soon-to-be removed features.

  • Removed: Removed features.

  • Fixed: Bug fixes.

  • Infrastructure: Changes in build or deployment infrastructure.

  • Documentation: Changes in documentation.

Release 0.10.10

Fixed

  • Fix AttributeError raised when mocking a proxied object.

Release 0.10.9

Fixed

  • Fix flexmock not mocking methods properly on derived classes.

Release 0.10.8

Fixed

  • Fix with_args not working built-in functions.

Release 0.10.7

Fixed

  • Fix with_args not working built-in methods.

  • Fix previous pytest --durations fix not working.

Release 0.10.6

Fixed

  • Fix flexmock broken with Pytest 4 & 5.

  • Fix new_instances method not working with Python 2.7.

  • Fix multiple expectations for the same classmethod are not matched.

Release 0.10.5

Added

  • Improve error message on unmatched method signature expectation.

Fixed

  • Fix using should_call passes wrong runtime_self.

  • Fix pytest --durations flag when flexmock is installed.

Release 0.10.4

  • drop Python 2.6, 3.3 and Jython support

  • add Python 3.6 and 3.7 support

  • don’t hide exception when flexmock is used as context manager

  • fix expectation reset for static methods on pypy 2

  • ensure original exception isn’t suppressed in pytest hook

Release 0.10.3

  • fix compatibility with py.test 4.1

  • minor documentation fixes

Release 0.10.2

  • fix recognizing whether mocked object is a method or not on Python 3

Release 0.10.1

  • fix decode problem in setup.py on Python 3

Release 0.10.0

Release 0.9.7

  • small update to add support for TeamCity / PyCharm test runner.

Release 0.9.6

  • fix staticmethod mocking on instances

  • fix comparison of kwargs ordering issues

  • fix ReturnValue.__str__

Release 0.9.5

  • bugfix: stop enforcing argument signatures on flexmock objects

Release 0.9.4

  • add support for stubbing return values on getter properties

  • add custom matcher object support to with_args

  • add support for striter function signature checks

  • add support for non-callable attributes

  • add support chained attributes (thanks Bryce Covert!)

  • add iter support to Mock objects

  • add PyPy support

  • add Jython support

  • fix should_call to work with class mocks

  • fix and_return to return None by default

  • fix MRO issues on builtin methods on 2.7+/3.2+

  • imporove defaults: partial mocks created using the func=return_value style now default to replace_with instead of should_receive for callables

Release 0.9.3

  • add python 3.3 test target

  • add proper handling of ordered() expectation across different methods

  • add property support on fake objects

  • fix compatibility with pytest 2.2 (thanks jpvanhal!)

  • fix insidious bug with mocking subclasses of str class

  • fix tuple handling when formatting arguments

  • fix reseting subclass methods

Release 0.9.2

  • fix mocking builtins by reseting expectation when raising exceptions

  • fix mocking private methods on classes with leading underscores

  • limit the damage of from flexmock import * by limiting to just flexmock()

  • ensure _pre_flexmock_success is cleaned up after each test

Release 0.9.1

  • adding support for more test runners:

    • unittest2

    • django

    • twisted/trial

    • zope.testrunner

    • subunit

    • testtools

Release 0.9.0

  • adding state machine support using when()

  • make expectation fail as soon as number of expected calls is exceeded

  • flexmock_teardown no longer returns a function

  • allow should_call on class and static methods

  • disallow should_call on class mocks

  • fixing unicode args handling

  • fixing issues with @property methods misbehaving in the debugger

  • fixing pytest integration and instance teardown

  • fixing private method handling

Release 0.8.1

  • fixing pytest and doctest integration to always call flexmock_teardown

  • fixing flexmock_teardown to return a function as before so it can be used as a decorator

Release 0.8.0

  • big changes in runner integration support (no more stack examination or sketchy teardown replacement)

  • doctest integration

  • fixing ordering verification when the method has a default stub

  • fixing calling with_args() without arguments to match exactly no arguments (thanks jerico-dev!)

  • 20% performance improvement

  • make sure to return object itself when partial mocking instances unless the object already has some of the methods

  • ensure consecutive calls return same mock object

Release 0.7.4.2

  • adding regex support for arg matching and spy return values

  • enabling replace_with for class mocks

  • disabling expectation checking if an exception has already been raised

  • massive refactoring of the way flexmock does monkey patching

Release 0.7.4.1

  • Fixing replace_with to work properly like and_execute

  • (and_execute will be deprecated in next release!)

Release 0.7.4

  • Fixed exception type check when no message specified

  • Make properties work optionally with parentheses

  • Make sure should_receive does not replace flexmock methods

  • Removed new_instances= param in favor of new_instances() method

  • Refactoring to move all state to FlexmockContainer class

Release 0.7.3

  • Added new_instances method (new_instances param will be deprecated in next release!)

  • Added replace_with to enable returning results of custom functions

  • Added with support for FlexMock objects

  • Moved tests to their own directory

  • Lots of documentation cleanup and updates

Release 0.7.2

  • Added support for chained methods

  • Moved flexmock_teardown to module level to expose it for other test runners

  • Added py.test support (thanks to derdon)

  • Lots of test refactoring and improvements for multiple test runner support

  • Fix loop in teardown

  • Fix should_call for same method with different args

Release 0.7.1

  • Fix bug with “never” not working when the expectation is not met

  • Fix bug in duplicate calls to original method in pass_thru mode (thanks sagara-!)

  • Fix bug in handling unicode characters in ReturnValue

Release 0.7.0

  • Better error handling for trying to mock builtins

  • Added simple test harness for running on multiple versions / test runners

  • Fixed unicode arg formatting (thanks to sagara-!)

  • Made it impossible to mock non-existent methods

  • Ensure flexmock teardown takes varargs (for better runner integration)

Release 0.6.9

  • Initial nose integration (still no support for generated tests)

  • Fixing private class methods

  • Some test refactoring to support different test runners

Release 0.6.8

  • Add should_call() alias for should_receive().and_execute

  • Ensure new_instances can’t be used with expectation modifiers

  • Make and_execute match return value by class in addition to value

  • Support for mocking out static methods

  • Bit of test fixage (thanks to derdon)

Release 0.6.7

  • Fixing clobbering of original method by multiple flexmock calls

  • Making and_raise work properly with exception classes and args

  • Proper exception matching with and_execute

  • Fix mocking same class twice

Release 0.6.6

  • Removing extra args from should_receive

  • Making and_execute check return/raise value of original method

  • Refactoring FlexMock constructor into factory method

  • Fixing new_instances to accept multiple args instead of just none

  • Raising an exception when and_execute is set on class mock

Release 0.6.5

  • Adding support for multiple flexmock() calls on same object

  • Adding error detection on and_execute for missing or unbound methods

  • Make sure empty args don’t include None

Release 0.6.4

  • Fixing up teardown cleanup code after an exception is raised in tests

  • Fixing and_yield to return proper generator

  • Adding and_yield returning a predefined generator

  • Replacing and_passthru with and_execute

  • Make it easier to mock private methods

Release 0.6.3

  • Adding keyword argument expectation matching

Release 0.6.2

  • Changing and_return(multiple=True) to one_by_one

  • Making it possible to supply multiple args to and_return instead of a tuple

  • Changing default mock behavior to create attributes instead of methods

  • FIX teardown for python3

Release 0.6.1

  • Make it even easier to integrate with new test runners

  • Adding support for mixing returns and raises in return values

Release 0.6

  • Adding support for multiple arg type matches

  • Pulling out the entry point code from constructor into its own method.

Release 0.5

  • FIX: ensuring that mocks are cleaned up properly between tests

  • BROKEN: part1 on ensuring mocking multiple objects works correctly

  • Make sure pass_thru doesn’t try to call a non-existent method

  • Fixing up copyright notice

  • Adding some missing pydocs

Release 0.4

  • Fixing tests and ensuring mock methods really get created properly

  • Making sure shortcuts create methods rather than attributes

  • Fixing doc strings

  • Removing the new-style/old-style convert code, it’s stupid

Release 0.3

  • Making Expectation.mock into a property so that it shows up in pydoc

  • Adding proxying/spying and at_least/at_most expectation modifiers