title: django: running tests with coverage
body: <p>I am trying to run tests on <code>django</code> with <code>coverage</code>. It works fine, but it doesn't detect class definitions, because they are defined before coverage is started. I have following test runner, that I use, when I compute coverage:</p>
  
  <pre><code>import sys
  import os
  import logging
  
  from django.conf import settings
  
  MAIN_TEST_RUNNER = 'django.test.simple.run_tests'
  
  if settings.COMPUTE_COVERAGE:
      try:
          import coverage
      except ImportError:
          print "Warning: coverage module not found: test code coverage will not be computed"
      else:
          coverage.exclude('def __unicode__')
          coverage.exclude('if DEBUG')
          coverage.exclude('if settings.DEBUG')
          coverage.exclude('raise')
          coverage.erase()
          coverage.start()
          MAIN_TEST_RUNNER = 'django-test-coverage.runner.run_tests'
  
  def run_tests(test_labels, verbosity=1, interactive=True, extra_tests=[]):
      # start coverage - jeśli włączmy już tutaj, a wyłączymy w django-test-coverage,
      # to dostaniemy dobrze wyliczone pokrycie dla instrukcji wykonywanych przy
      # imporcie modułów
      test_path = MAIN_TEST_RUNNER.split('.')
      # Allow for Python 2.5 relative paths
      if len(test_path) &gt; 1:
          test_module_name = '.'.join(test_path[:-1])
      else:
          test_module_name = '.'
      test_module = __import__(test_module_name, {}, {}, test_path[-1])
      test_runner = getattr(test_module, test_path[-1])
      failures = test_runner(test_labels, verbosity=verbosity, interactive=interactive)
      if failures:
          sys.exit(failures)
  </code></pre>
  
  <p>What can I do, to have classes also included in coverage? Otherwise I have quite a low coverage and I can't easily detect places, that really need to be covered.</p>