Profiling ========= The testrunner includes the ability to profile the test execution with hotshot via the --profile option. >>> import os.path, sys >>> directory_with_tests = os.path.join(this_directory, 'testrunner-ex') >>> sys.path.append(directory_with_tests) >>> defaults = [ ... '--path', directory_with_tests, ... '--tests-pattern', '^sampletestsf?$', ... ] >>> sys.argv = [testrunner_script, '--profile'] When the tests are run, we get profiling output. >>> from zope.testing import testrunner >>> testrunner.run(defaults) Running unit tests: ... Running samplelayers.Layer1 tests: ... Running samplelayers.Layer11 tests: ... Total: ... tests, 0 failures, 0 errors ... ncalls tottime percall cumtime percall filename:lineno(function)... Profiling also works across layers. >>> sys.argv = [testrunner_script, '-ssample2', '--profile', ... '--tests-pattern', 'sampletests_ntd'] >>> testrunner.run(defaults) Running... Tear down ... not supported... ncalls tottime percall cumtime percall filename:lineno(function)... The testrunner creates temnporary files containing hotshot profiler data: >>> import glob >>> files = list(glob.glob('tests_profile.*.prof')) >>> files.sort() >>> files ['tests_profile.cZj2jt.prof', 'tests_profile.yHD-so.prof'] It deletes these when rerun. We'll delete these ourselves: >>> import os >>> for f in files: ... os.unlink(f)