mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-11-20 10:33:36 +00:00
59 lines
1.5 KiB
Plaintext
59 lines
1.5 KiB
Plaintext
==========
|
|
Sentinel
|
|
==========
|
|
|
|
|
|
.. currentmodule:: mock
|
|
|
|
.. testsetup::
|
|
|
|
class ProductionClass(object):
|
|
def something(self):
|
|
return self.method()
|
|
|
|
class Test(unittest2.TestCase):
|
|
def testSomething(self):
|
|
pass
|
|
self = Test('testSomething')
|
|
|
|
|
|
.. data:: sentinel
|
|
|
|
The ``sentinel`` object provides a convenient way of providing unique
|
|
objects for your tests.
|
|
|
|
Attributes are created on demand when you access them by name. Accessing
|
|
the same attribute will always return the same object. The objects
|
|
returned have a sensible repr so that test failure messages are readable.
|
|
|
|
|
|
.. data:: DEFAULT
|
|
|
|
The `DEFAULT` object is a pre-created sentinel (actually
|
|
`sentinel.DEFAULT`). It can be used by :attr:`~Mock.side_effect`
|
|
functions to indicate that the normal return value should be used.
|
|
|
|
|
|
Sentinel Example
|
|
================
|
|
|
|
Sometimes when testing you need to test that a specific object is passed as an
|
|
argument to another method, or returned. It can be common to create named
|
|
sentinel objects to test this. `sentinel` provides a convenient way of
|
|
creating and testing the identity of objects like this.
|
|
|
|
In this example we monkey patch `method` to return
|
|
`sentinel.some_object`:
|
|
|
|
.. doctest::
|
|
|
|
>>> real = ProductionClass()
|
|
>>> real.method = Mock(name="method")
|
|
>>> real.method.return_value = sentinel.some_object
|
|
>>> result = real.method()
|
|
>>> assert result is sentinel.some_object
|
|
>>> sentinel.some_object
|
|
sentinel.some_object
|
|
|
|
|