API docs for deferredruntest
This commit is contained in:
@@ -19,6 +19,13 @@ testtools
|
|||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
|
||||||
|
testtools.deferredruntest
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
.. automodule:: testtools.deferredruntest
|
||||||
|
:members:
|
||||||
|
|
||||||
|
|
||||||
testtools.matchers
|
testtools.matchers
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,29 @@
|
|||||||
# Copyright (c) 2010 testtools developers. See LICENSE for details.
|
# Copyright (c) 2010 testtools developers. See LICENSE for details.
|
||||||
|
|
||||||
"""Individual test case execution for tests that return Deferreds."""
|
"""Individual test case execution for tests that return Deferreds.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
class TwistedTests(testtools.TestCase):
|
||||||
|
|
||||||
|
run_tests_with = AsynchronousDeferredRunTest
|
||||||
|
|
||||||
|
def test_something(self):
|
||||||
|
# Wait for 5 seconds and then fire with 'Foo'.
|
||||||
|
d = Deferred()
|
||||||
|
reactor.callLater(5, lambda: d.callback('Foo'))
|
||||||
|
d.addCallback(self.assertEqual, 'Foo')
|
||||||
|
return d
|
||||||
|
|
||||||
|
When ``test_something`` is run, ``AsynchronousDeferredRunTest`` will run the
|
||||||
|
reactor until ``d`` fires, and wait for all of its callbacks to be processed.
|
||||||
|
"""
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'assert_fails_with',
|
|
||||||
'AsynchronousDeferredRunTest',
|
'AsynchronousDeferredRunTest',
|
||||||
'AsynchronousDeferredRunTestForBrokenTwisted',
|
'AsynchronousDeferredRunTestForBrokenTwisted',
|
||||||
'SynchronousDeferredRunTest',
|
'SynchronousDeferredRunTest',
|
||||||
|
'assert_fails_with',
|
||||||
]
|
]
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
@@ -45,7 +62,11 @@ class _DeferredRunTest(RunTest):
|
|||||||
|
|
||||||
|
|
||||||
class SynchronousDeferredRunTest(_DeferredRunTest):
|
class SynchronousDeferredRunTest(_DeferredRunTest):
|
||||||
"""Runner for tests that return synchronous Deferreds."""
|
"""Runner for tests that return synchronous Deferreds.
|
||||||
|
|
||||||
|
This runner doesn't touch the reactor at all. It assumes that tests return
|
||||||
|
Deferreds that have already fired.
|
||||||
|
"""
|
||||||
|
|
||||||
def _run_user(self, function, *args):
|
def _run_user(self, function, *args):
|
||||||
d = defer.maybeDeferred(function, *args)
|
d = defer.maybeDeferred(function, *args)
|
||||||
@@ -89,8 +110,8 @@ _log_observer = _LogObserver()
|
|||||||
class AsynchronousDeferredRunTest(_DeferredRunTest):
|
class AsynchronousDeferredRunTest(_DeferredRunTest):
|
||||||
"""Runner for tests that return Deferreds that fire asynchronously.
|
"""Runner for tests that return Deferreds that fire asynchronously.
|
||||||
|
|
||||||
Use this runner when you have tests that return Deferreds that will only
|
Use this runner when you have tests that return Deferreds that will
|
||||||
fire if the reactor is left to spin for a while.
|
only fire if the reactor is left to spin for a while.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, case, handlers=None, last_resort=None, reactor=None,
|
def __init__(self, case, handlers=None, last_resort=None, reactor=None,
|
||||||
@@ -102,7 +123,7 @@ class AsynchronousDeferredRunTest(_DeferredRunTest):
|
|||||||
compatibility with that we have to insert them before the local
|
compatibility with that we have to insert them before the local
|
||||||
parameters.
|
parameters.
|
||||||
|
|
||||||
:param case: The `TestCase` to run.
|
:param TestCase case: The `TestCase` to run.
|
||||||
:param handlers: A list of exception handlers (ExceptionType, handler)
|
:param handlers: A list of exception handlers (ExceptionType, handler)
|
||||||
where 'handler' is a callable that takes a `TestCase`, a
|
where 'handler' is a callable that takes a `TestCase`, a
|
||||||
``testtools.TestResult`` and the exception raised.
|
``testtools.TestResult`` and the exception raised.
|
||||||
@@ -110,7 +131,7 @@ class AsynchronousDeferredRunTest(_DeferredRunTest):
|
|||||||
exceptions (those for which there is no handler).
|
exceptions (those for which there is no handler).
|
||||||
:param reactor: The Twisted reactor to use. If not given, we use the
|
:param reactor: The Twisted reactor to use. If not given, we use the
|
||||||
default reactor.
|
default reactor.
|
||||||
:param timeout: The maximum time allowed for running a test. The
|
:param float timeout: The maximum time allowed for running a test. The
|
||||||
default is 0.005s.
|
default is 0.005s.
|
||||||
:param debug: Whether or not to enable Twisted's debugging. Use this
|
:param debug: Whether or not to enable Twisted's debugging. Use this
|
||||||
to get information about unhandled Deferreds and left-over
|
to get information about unhandled Deferreds and left-over
|
||||||
@@ -126,7 +147,15 @@ class AsynchronousDeferredRunTest(_DeferredRunTest):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def make_factory(cls, reactor=None, timeout=0.005, debug=False):
|
def make_factory(cls, reactor=None, timeout=0.005, debug=False):
|
||||||
"""Make a factory that conforms to the RunTest factory interface."""
|
"""Make a factory that conforms to the RunTest factory interface.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
class SomeTests(TestCase):
|
||||||
|
# Timeout tests after two minutes.
|
||||||
|
run_tests_with = AsynchronousDeferredRunTest.make_factory(
|
||||||
|
timeout=120)
|
||||||
|
"""
|
||||||
# This is horrible, but it means that the return value of the method
|
# This is horrible, but it means that the return value of the method
|
||||||
# will be able to be assigned to a class variable *and* also be
|
# will be able to be assigned to a class variable *and* also be
|
||||||
# invoked directly.
|
# invoked directly.
|
||||||
@@ -293,21 +322,21 @@ class AsynchronousDeferredRunTestForBrokenTwisted(AsynchronousDeferredRunTest):
|
|||||||
|
|
||||||
|
|
||||||
def assert_fails_with(d, *exc_types, **kwargs):
|
def assert_fails_with(d, *exc_types, **kwargs):
|
||||||
"""Assert that 'd' will fail with one of 'exc_types'.
|
"""Assert that ``d`` will fail with one of ``exc_types``.
|
||||||
|
|
||||||
The normal way to use this is to return the result of 'assert_fails_with'
|
The normal way to use this is to return the result of
|
||||||
from your unit test.
|
``assert_fails_with`` from your unit test.
|
||||||
|
|
||||||
Equivalent to Twisted's ``assertFailure``.
|
Equivalent to Twisted's ``assertFailure``.
|
||||||
|
|
||||||
:param d: A Deferred that is expected to fail.
|
:param Deferred d: A ``Deferred`` that is expected to fail.
|
||||||
:param exc_types: The exception types that the Deferred is expected to
|
:param *exc_types: The exception types that the Deferred is expected to
|
||||||
fail with.
|
fail with.
|
||||||
:param failureException: An optional keyword argument. If provided, will
|
:param type failureException: An optional keyword argument. If provided,
|
||||||
raise that exception instead of
|
will raise that exception instead of
|
||||||
``testtools.TestCase.failureException``.
|
``testtools.TestCase.failureException``.
|
||||||
:return: A Deferred that will fail with an ``AssertionError`` if 'd' does
|
:return: A ``Deferred`` that will fail with an ``AssertionError`` if ``d``
|
||||||
not fail with one of the exception types.
|
does not fail with one of the exception types.
|
||||||
"""
|
"""
|
||||||
failureException = kwargs.pop('failureException', None)
|
failureException = kwargs.pop('failureException', None)
|
||||||
if failureException is None:
|
if failureException is None:
|
||||||
|
|||||||
Reference in New Issue
Block a user