Marco Bizzarri wrote: > Hi all. > > I would like to change the way test reports are generated, in a Zope > environment. > > I'm playing with TextTestReport, TextTestRunner. Since things are > getting to complicated, I'm afraid I'm following a non-pythonic way. > > Specifically, I would like to have an output like: > > package.subpackage.test_module.TestCase 0.1 > > where 0.1 is the time spent into doing the test. > > In a previous attempt, I made the tests print the number of the test > executed, so that I would have the following output: > > 1 package.subpackage.test_module.TestCase > > however, to do this, I had to put things in the following way: > > > class PAFlowTestRunner(TextTestRunner): > def _makeResult(self): > return PAFlowTextResult(self.stream, self.descriptions, > self.verbosity) > > class PAFlowTextResult(_TextTestResult): > > def startTest(self, test): > self.stream.write("%s " % self.testsRun) > _TextTestResult.startTest(self, test) > > > now, of course, this is ugly, because I'm using _TextTestResult, which > I'm not supposed to know, and I'm changing behaviour by subclassing, > which is not exactly what I would like to do. > > What is the pythonic way to accomplish this?
Have you looked at nosetests? Nose is a test-discovery & running-framework based upon unittest-module (but you can also "only" test simple functions, very handy) And it has a very powerful plugin-mechanism, that allows you to implement cleanly what you want. For each test, you get a start/end-method called in your plugin that you can use to gather the information you need, e.g. start/stop-times. For example, I've created an enhanced reporting plugin that lists all tests run (not only those failed or error'ed), and adding time-measuring per-test is on my list of todos. Diez -- http://mail.python.org/mailman/listinfo/python-list