Django: running tests with coverage

I am trying to run tests on django using coverage . It works fine, but does not define class definitions, as they are defined before starting to run. I have the following test runner that I use when calculating coverage:

 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) > 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) 

What can I do to make classes also covered? Otherwise, I have a fairly low coverage and I cannot easily find places that really need to be covered.

+7
django testing code-coverage
source share
1 answer

The easiest way is to use a coating to run a test runner. If your runner is called "runner.py", use:

 coverage run runner.py 

You can put your four exceptions in a .coveragerc file and you will have all the benefits of your coverage code without saving any of your coverage code.

+8
source share

All Articles