Added a blurb about new SimpleTestCase class to release notes.

Also, tweaked the cross-referencing of `django.test` symbols.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17644 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Ramiro Morales 2012-03-03 21:50:49 +00:00
parent dd441701ce
commit 149e541034
2 changed files with 34 additions and 23 deletions

View File

@ -484,17 +484,17 @@ project, read the :ref:`migration guide <time-zones-migration-guide>`.
HTML comparisons in tests HTML comparisons in tests
~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~
The :class:`~django.test.testcase.TestCase` base class now has some helpers to The base classes in :mod:`django.test` now have some helpers to
compare HTML without tripping over irrelevant differences in whitespace, compare HTML without tripping over irrelevant differences in whitespace,
argument quoting/ordering and closing of self-closing tags. You can either argument quoting/ordering and closing of self-closing tags. You can either
compare HTML directly with the new compare HTML directly with the new
:meth:`~django.test.testcase.TestCase.assertHTMLEqual` and :meth:`~django.test.SimpleTestCase.assertHTMLEqual` and
:meth:`~django.test.testcase.TestCase.assertHTMLNotEqual` assertions, or use :meth:`~django.test.SimpleTestCase.assertHTMLNotEqual` assertions, or use
the ``html=True`` flag with the ``html=True`` flag with
:meth:`~django.test.testcase.TestCase.assertContains` and :meth:`~django.test.TestCase.assertContains` and
:meth:`~django.test.testcase.TestCase.assertNotContains` to test whether the :meth:`~django.test.TestCase.assertNotContains` to test whether the
client's response contains a given HTML fragment. See the :ref:`assertion client's response contains a given HTML fragment. See the :ref:`assertions
documentation<assertions>` for more. documentation <assertions>` for more.
Two new date format strings Two new date format strings
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -614,6 +614,12 @@ Django 1.4 also includes several smaller improvements worth noting:
:attr:`Sitemap.protocol <django.contrib.sitemaps.Sitemap.protocol>` class :attr:`Sitemap.protocol <django.contrib.sitemaps.Sitemap.protocol>` class
attribute. attribute.
* A new :class:`django.test.SimpleTestCase` subclass of
:class:`unittest.TestCase`
that is comparatively lighter than :class:`django.test.TestCase` and
company. It can be useful in testing scenarios where e.g. no database
interaction is needed. See :ref:`testcase_hierarchy_diagram`.
Backwards incompatible changes in 1.4 Backwards incompatible changes in 1.4
===================================== =====================================
@ -1016,8 +1022,8 @@ wild, because they would confuse browsers too.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
It's now possible to check whether a template was used within a block of It's now possible to check whether a template was used within a block of
code with :meth:`~django.test.testcase.TestCase.assertTemplateUsed` and code with :meth:`~django.test.test.TestCase.assertTemplateUsed` and
:meth:`~django.test.testcase.TestCase.assertTemplateNotUsed`. And they :meth:`~django.test.test.TestCase.assertTemplateNotUsed`. And they
can be used as a context manager:: can be used as a context manager::
with self.assertTemplateUsed('index.html'): with self.assertTemplateUsed('index.html'):

View File

@ -1089,8 +1089,12 @@ TestCase
Normal Python unit test classes extend a base class of Normal Python unit test classes extend a base class of
:class:`unittest.TestCase`. Django provides a few extensions of this base class: :class:`unittest.TestCase`. Django provides a few extensions of this base class:
.. image:: _images/django_unittest_classes_hierarchy.png .. _testcase_hierarchy_diagram:
:alt: Django hierarchy of unit testing helper classes (TestCase subclasses)
.. figure:: _images/django_unittest_classes_hierarchy.png
:alt: Hierarchy of Django unit testing classes (TestCase subclasses)
Hierarchy of Django unit testing classes
.. class:: TestCase() .. class:: TestCase()
@ -1166,19 +1170,20 @@ A very thin subclass of :class:`unittest.TestCase`, it extends it with some
basic functionality like: basic functionality like:
* Saving and restoring the Python warning machinery state. * Saving and restoring the Python warning machinery state.
* Checking that a callable :meth:`raises a certain exeception <TestCase.assertRaisesMessage>`. * Checking that a callable :meth:`raises a certain exception <SimpleTestCase.assertRaisesMessage>`.
* :meth:`Testing form field rendering <assertFieldOutput>`. * :meth:`Testing form field rendering <SimpleTestCase.assertFieldOutput>`.
* Testing server :ref:`HTML responses for the presence/lack of a given fragment <assertions>`.
* The ability to run tests with :ref:`modified settings <overriding-settings>`
If you need any of the other more complex and heavyweight Django-specific If you need any of the other more complex and heavyweight Django-specific
features like: features like:
* The ability to run tests with :ref:`modified settings <overriding-settings>`
* Using the :attr:`~TestCase.client` :class:`~django.test.client.Client`. * Using the :attr:`~TestCase.client` :class:`~django.test.client.Client`.
* Testing or using the ORM. * Testing or using the ORM.
* Database :attr:`~TestCase.fixtures`. * Database :attr:`~TestCase.fixtures`.
* Custom test-time :attr:`URL maps <TestCase.urls>`. * Custom test-time :attr:`URL maps <TestCase.urls>`.
* Test :ref:`skipping based on database backend features <skipping-tests>`. * Test :ref:`skipping based on database backend features <skipping-tests>`.
* Our specialized :ref:`assert* <assertions>` metods. * The remaining specialized :ref:`assert* <assertions>` methods.
then you should use :class:`~django.test.TransactionTestCase` or then you should use :class:`~django.test.TransactionTestCase` or
:class:`~django.test.TestCase` instead. :class:`~django.test.TestCase` instead.
@ -1515,7 +1520,7 @@ message generated by the assertion. This allows you to provide additional
details that may help you to identify the location and cause of an failure in details that may help you to identify the location and cause of an failure in
your test suite. your test suite.
.. method:: TestCase.assertRaisesMessage(expected_exception, expected_message, callable_obj=None, *args, **kwargs) .. method:: SimpleTestCase.assertRaisesMessage(expected_exception, expected_message, callable_obj=None, *args, **kwargs)
.. versionadded:: 1.4 .. versionadded:: 1.4
@ -1525,7 +1530,7 @@ your test suite.
failure. Similar to unittest's :meth:`~unittest.TestCase.assertRaisesRegexp` failure. Similar to unittest's :meth:`~unittest.TestCase.assertRaisesRegexp`
with the difference that ``expected_message`` isn't a regular expression. with the difference that ``expected_message`` isn't a regular expression.
.. method:: assertFieldOutput(self, fieldclass, valid, invalid, field_args=None, field_kwargs=None, empty_value=u'') .. method:: SimpleTestCase.assertFieldOutput(self, fieldclass, valid, invalid, field_args=None, field_kwargs=None, empty_value=u'')
.. versionadded:: 1.4 .. versionadded:: 1.4
@ -1559,7 +1564,7 @@ your test suite.
the response content will be based on HTML semantics instead of the response content will be based on HTML semantics instead of
character-by-character equality. Whitespace is ignored in most cases, character-by-character equality. Whitespace is ignored in most cases,
attribute ordering is not significant. See attribute ordering is not significant. See
:func:`~TestCase.assertHTMLEqual` for more details. :meth:`~SimpleTestCase.assertHTMLEqual` for more details.
.. method:: TestCase.assertNotContains(response, text, status_code=200, msg_prefix='', html=False) .. method:: TestCase.assertNotContains(response, text, status_code=200, msg_prefix='', html=False)
@ -1572,7 +1577,7 @@ your test suite.
the response content will be based on HTML semantics instead of the response content will be based on HTML semantics instead of
character-by-character equality. Whitespace is ignored in most cases, character-by-character equality. Whitespace is ignored in most cases,
attribute ordering is not significant. See attribute ordering is not significant. See
:func:`~TestCase.assertHTMLEqual` for more details. :meth:`~SimpleTestCase.assertHTMLEqual` for more details.
.. method:: TestCase.assertFormError(response, form, field, errors, msg_prefix='') .. method:: TestCase.assertFormError(response, form, field, errors, msg_prefix='')
@ -1617,7 +1622,7 @@ your test suite.
.. versionadded:: 1.4 .. versionadded:: 1.4
You can use this as a context manager in the same way as You can use this as a context manager in the same way as
:func:`~TestCase.assertTemplateUsed`. :meth:`~TestCase.assertTemplateUsed`.
.. method:: TestCase.assertRedirects(response, expected_url, status_code=302, target_status_code=200, msg_prefix='') .. method:: TestCase.assertRedirects(response, expected_url, status_code=302, target_status_code=200, msg_prefix='')
@ -1676,7 +1681,7 @@ your test suite.
Person.objects.create(name="Aaron") Person.objects.create(name="Aaron")
Person.objects.create(name="Daniel") Person.objects.create(name="Daniel")
.. method:: TestCase.assertHTMLEqual(html1, html2, msg=None) .. method:: SimpleTestCase.assertHTMLEqual(html1, html2, msg=None)
.. versionadded:: 1.4 .. versionadded:: 1.4
@ -1707,13 +1712,13 @@ your test suite.
``html1`` and ``html2`` must be valid HTML. An ``AssertionError`` will be ``html1`` and ``html2`` must be valid HTML. An ``AssertionError`` will be
raised if one of them cannot be parsed. raised if one of them cannot be parsed.
.. method:: TestCase.assertHTMLNotEqual(html1, html2, msg=None) .. method:: SimpleTestCase.assertHTMLNotEqual(html1, html2, msg=None)
.. versionadded:: 1.4 .. versionadded:: 1.4
Asserts that the strings ``html1`` and ``html2`` are *not* equal. The Asserts that the strings ``html1`` and ``html2`` are *not* equal. The
comparison is based on HTML semantics. See comparison is based on HTML semantics. See
:func:`~TestCase.assertHTMLEqual` for details. :meth:`~SimpleTestCase.assertHTMLEqual` for details.
``html1`` and ``html2`` must be valid HTML. An ``AssertionError`` will be ``html1`` and ``html2`` must be valid HTML. An ``AssertionError`` will be
raised if one of them cannot be parsed. raised if one of them cannot be parsed.