summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorR. David Murray <rdmurray@bitdance.com>2010-04-01 01:28:39 (GMT)
committerR. David Murray <rdmurray@bitdance.com>2010-04-01 01:28:39 (GMT)
commit6c9fc4cf2b84e1198cf5fd99a742333f735038f7 (patch)
tree68c5560784e5bbcd2ef65788f1c25c290f76e2ea /Doc
parent4fcf7d445cc5fc65a3e2927001481e0797527251 (diff)
downloadcpython-6c9fc4cf2b84e1198cf5fd99a742333f735038f7.zip
cpython-6c9fc4cf2b84e1198cf5fd99a742333f735038f7.tar.gz
cpython-6c9fc4cf2b84e1198cf5fd99a742333f735038f7.tar.bz2
A couple small grammar fixes in test.rst, and rewrite the
check_warnings docs to be clearer.
Diffstat (limited to 'Doc')
-rw-r--r--Doc/library/test.rst84
1 files changed, 46 insertions, 38 deletions
diff --git a/Doc/library/test.rst b/Doc/library/test.rst
index 12ddb60..813d2d9 100644
--- a/Doc/library/test.rst
+++ b/Doc/library/test.rst
@@ -235,15 +235,15 @@ The :mod:`test.test_support` module defines the following constants:
.. data:: TESTFN
- Set to the name that a temporary file could use. Any temporary file that is
- created should be closed and unlinked (removed).
+ Set to a name that is safe to use as the name of a temporary file. Any
+ temporary file that is created should be closed and unlinked (removed).
The :mod:`test.test_support` module defines the following functions:
.. function:: forget(module_name)
- Remove the module named *module_name* from ``sys.modules`` and deletes any
+ Remove the module named *module_name* from ``sys.modules`` and delete any
byte-compiled files of the module.
@@ -286,49 +286,55 @@ The :mod:`test.test_support` module defines the following functions:
This will run all tests defined in the named module.
-.. function:: check_warnings(*filters, quiet=None)
+.. function:: check_warnings(*filters, quiet=True)
- A convenience wrapper for ``warnings.catch_warnings()`` that makes
- it easier to test that a warning was correctly raised with a single
- assertion. It is approximately equivalent to calling
- ``warnings.catch_warnings(record=True)``.
+ A convenience wrapper for :func:`warnings.catch_warnings()` that makes it
+ easier to test that a warning was correctly raised. It is approximately
+ equivalent to calling ``warnings.catch_warnings(record=True)`` with
+ :meth:`warnings.simplefilter` set to ``always`` and with the option to
+ automatically validate the results that are recorded.
- It accepts 2-tuples ``("message regexp", WarningCategory)`` as positional
- arguments. If there's some ``*filters`` defined, or if the optional keyword
- argument ``quiet`` is :const:`False`, it checks if the warnings are
- effective. If some filter did not catch any warning, the test fails. If some
- warnings are not caught, the test fails, too. To disable these checks, set
- argument ``quiet`` to :const:`True`.
+ ``check_warnings`` accepts 2-tuples of the form ``("message regexp",
+ WarningCategory)`` as positional arguments. If one or more *filters* are
+ provided, or if the optional keyword argument *quiet* is :const:`False`,
+ it checks to make sure the warnings are as expected: each specified filter
+ must match at least one of the warnings raised by the enclosed code or the
+ test fails, and if any warnings are raised that do not match any of the
+ specified filters the test fails. To disable the first of these checks,
+ set *quiet* to :const:`True`.
- Without argument, it defaults to::
+ If no arguments are specified, it defaults to::
check_warnings(("", Warning), quiet=True)
- Additionally, on entry to the context manager, a :class:`WarningRecorder`
- instance is returned. The underlying warnings list is available via the
- recorder object's :attr:`warnings` attribute, while the attributes of the
- last raised warning are also accessible directly on the object. If no
- warning has been raised, then the latter attributes will all be
- :const:`None`.
+ In this case all warnings are caught and no errors are raised.
- A :meth:`reset` method is also provided on the recorder object. This
- method simply clears the warnings list.
+ On entry to the context manager, a :class:`WarningRecorder` instance is
+ returned. The underlying warnings list from
+ :func:`~warnings.catch_warnings` is available via the recorder object's
+ :attr:`warnings` attribute. As a convenience, the attributes of the object
+ representing the most recent warning can also be accessed directly through
+ the recorder object (see example below). If no warning has been raised,
+ then any of the attributes that would otherwise be expected on an object
+ representing a warning will return :const:`None`.
- The context manager may be used like this::
+ The recorder object also has a :meth:`reset` method, which clears the
+ warnings list.
- import warnings
-
- with check_warnings(quiet=False):
- exec('assert(False, "Hey!")')
- warnings.warn(UserWarning("Hide me!"))
+ The context manager is designed to be used like this::
with check_warnings(("assertion is always true", SyntaxWarning),
("", UserWarning)):
exec('assert(False, "Hey!")')
warnings.warn(UserWarning("Hide me!"))
+ In this case if either warning was not raised, or some other warning was
+ raised, :func:`check_warnings` would raise an error.
+
+ When a test needs to look more deeply into the warnings, rather than
+ just checking whether or not they occurred, code like this can be used::
+
with check_warnings(quiet=True) as w:
- warnings.simplefilter("always")
warnings.warn("foo")
assert str(w.args[0]) == "foo"
warnings.warn("bar")
@@ -338,21 +344,23 @@ The :mod:`test.test_support` module defines the following functions:
w.reset()
assert len(w.warnings) == 0
+ Here all warnings will be caught, and the test code tests the captured
+ warnings directly.
+
.. versionadded:: 2.6
.. versionchanged:: 2.7
- New optional attributes ``*filters`` and ``quiet``.
+ New optional arguments *filters* and *quiet*.
.. function:: check_py3k_warnings(*filters, quiet=False)
- Same as :func:`check_warnings` but for Python 3 compatibility warnings.
+ Similar to :func:`check_warnings`, but for Python 3 compatibility warnings.
If ``sys.py3kwarning == 1``, it checks if the warning is effectively raised.
- If ``sys.py3kwarning == 0``, it checks that no warning is raised.
-
- It accepts 2-tuples ``("message regexp", WarningCategory)`` as positional
- arguments. When the optional keyword argument ``quiet`` is :const:`True`, it
- does not fail if a filter catches nothing. Without argument, it defaults
- to::
+ If ``sys.py3kwarning == 0``, it checks that no warning is raised. It
+ accepts 2-tuples of the form ``("message regexp", WarningCategory)`` as
+ positional arguments. When the optional keyword argument *quiet* is
+ :const:`True`, it does not fail if a filter catches nothing. Without
+ arguments, it defaults to::
check_py3k_warnings(("", DeprecationWarning), quiet=False)