.. image:: https://img.shields.io/pypi/v/doublex.png
:target: http://pypi.python.org/pypi/doublex
:alt: Latest PyPI version
.. image:: https://img.shields.io/pypi/l/doublex.png?maxAge=2592000
:alt: License
.. image:: https://img.shields.io/pypi/pyversions/doublex.png?maxAge=2592000
:target: http://pypi.python.org/pypi/doublex
:alt: Supported Python Versions
.. image:: https://travis-ci.org/davidvilla/python-doublex.svg?branch=master
:target: https://travis-ci.org/davidvilla/python-doublex
:alt: Travis CI status
Powerful test doubles framework for Python
[
`install <http://python-doublex.readthedocs.org/en/latest/install.html>`_ |
`docs <http://python-doublex.readthedocs.org/>`_ |
`changelog <http://python-doublex.readthedocs.org/en/latest/release-notes.html>`_ |
`sources <https://bitbucket.org/DavidVilla/python-doublex>`_ |
`issues <https://bitbucket.org/DavidVilla/python-doublex/issues>`_ |
`PyPI <http://pypi.python.org/pypi/doublex>`_ |
`github clone <https://github.com/davidvilla/python-doublex>`_ |
`travis <https://travis-ci.org/davidvilla/python-doublex>`_
]
a trivial example
-----------------
.. sourcecode:: python
import unittest
from doublex import Spy, assert_that, called
class SpyUseExample(unittest.TestCase):
def test_spy_example(self):
# given
spy = Spy(SomeCollaboratorClass)
cut = YourClassUnderTest(spy)
# when
cut.a_method_that_call_the_collaborator()
# then
assert_that(spy.some_method, called())
See more about `doublex doubles <http://python-doublex.readthedocs.org/en/latest/reference.html#doubles>`_.
Features
--------
* doubles have not public API framework methods. It could cause silent misspelling.
* doubles do not require collaborator instances, just classes, and it never instantiate them.
* ``assert_that()`` is used for ALL assertions.
* mock invocation order is relevant by default.
* supports old and new style classes.
* **supports Python versions: 2.6, 2.7, 3.3, 3.4, 3.5. 3.6, 3.7**
Debian
^^^^^^
* `official package <http://packages.debian.org/source/sid/doublex>`_ (may be outdated)
* amateur repository: ``deb http://pike.esi.uclm.es/arco/ sid main`` (always updated)
* `official ubuntu package <https://launchpad.net/ubuntu/+source/doublex>`_
* debian dir: ``svn://svn.debian.org/svn/python-modules/packages/doublex/trunk``
related
-------
* `slides <http://arco.esi.uclm.es/~david.villa/python-doublex/slides>`_
* `pyDoubles <http://python-doublex.readthedocs.org/en/latest/pyDoubles.html>`_
* `doublex-expects <https://pypi.python.org/pypi/doublex-expects>`_
* `crate <https://crate.io/packages/doublex/>`_
* `other doubles <http://garybernhardt.github.io/python-mock-comparison/>`_
* `ludibrio <https://pypi.python.org/pypi/ludibrio>`_
* `doubles <https://github.com/uber/doubles>`_
.. Local Variables:
.. coding: utf-8
.. mode: rst
.. mode: flyspell
.. ispell-local-dictionary: "american"
.. fill-columnd: 90
.. End: