title: Difference between TestCase and TransactionTestCase classes in django test
body: <p>Please explain the difference between the <code>TestCase</code> class and <code>TransactionTestCase</code> class. I have read the documentation but it's only saying that <code>TestCase</code> runs tests in a database transaction and uses rollback to &quot;undo&quot; the test in the database, and if you need to manually manage transactions within your test, you would need to use <code>django.test.TransactionTestCase</code>.</p>
  <p>Please help me understand the actual difference with an example.
  In what condition will <code>TestCase</code> fail? Do rollbacks happen automatically or do we have to write code to do the rollback?</p>