  ------------------
  
  .. class:: SimpleTestCase()
  
  A thin subclass of :class:`unittest.TestCase`, it extends it with some basic
  functionality like:
  
  * Some useful assertions like:
  
    * Checking that a callable :meth:`raises a certain exception
      <SimpleTestCase.assertRaisesMessage>`.
 
</s> remove Django's ``TestCase`` class (described below) makes use of database transaction
facilities to speed up the process of resetting the database to a known state
at the beginning of each test. A consequence of this, however, is that some
database behaviors cannot be tested within a Django ``TestCase`` class. For
instance, you cannot test that a block of code is executing within a
transaction, as is required when using
 </s> add ``TransactionTestCase`` inherits from :class:`~django.test.SimpleTestCase` to
add some database-specific features:

* Resetting the database to a known state at the beginning of each test to
  ease testing and using the ORM.
* Database :attr:`~TransactionTestCase.fixtures`.
* Test :ref:`skipping based on database backend features <skipping-tests>`.
* The remaining specialized :meth:`assert*
  <TransactionTestCase.assertQuerysetEqual>` methods.

Django's :class:`TestCase` class is a more commonly used subclass of
``TransactionTestCase`` that makes use of database transaction facilities
to speed up the process of resetting the database to a known state at the
beginning of each test. A consequence of this, however, is that some database
behaviors cannot be tested within a Django ``TestCase`` class. For instance,
you cannot test that a block of code is executing within a transaction, as is
required when using </s> remove This class provides some additional capabilities that can be useful for testing
websites.
 </s> add This is the most common class to use for writing tests in Django. It inherits
from :class:`TransactionTestCase` (and by extension :class:`SimpleTestCase`).
If your Django application doesn't use a database, use :class:`SimpleTestCase`. </s> remove Converting a normal :class:`unittest.TestCase` to a Django :class:`TestCase` is
easy: Just change the base class of your test from ``'unittest.TestCase'`` to
``'django.test.TestCase'``. All of the standard Python unit test functionality
will continue to be available, but it will be augmented with some useful
additions, including:
 </s> add The class: </s> remove If you need any of the other more complex and heavyweight Django-specific
features like:

* Testing or using the ORM.
* Database :attr:`~TransactionTestCase.fixtures`.
* Test :ref:`skipping based on database backend features <skipping-tests>`.
* The remaining specialized :meth:`assert*
  <TransactionTestCase.assertQuerysetEqual>` methods.

then you should use :class:`~django.test.TransactionTestCase` or
:class:`~django.test.TestCase` instead.
 </s> add If your tests make any database queries, use subclasses
:class:`~django.test.TransactionTestCase` or :class:`~django.test.TestCase`.
A subclass of :class:`unittest.TestCase` that adds this functionality:
  ------------------
  
  .. class:: SimpleTestCase()
  
A subclass of :class:`unittest.TestCase` that adds this functionality:
A subclass of :class:`unittest.TestCase` that adds this functionality:
  
  * Some useful assertions like:
  
    * Checking that a callable :meth:`raises a certain exception
      <SimpleTestCase.assertRaisesMessage>`.
keep keep keep keep replace replace keep keep keep keep keep
 Refs #26270 -- Reorganized TestCase docs. 
docs/topics/testing/tools.txt