Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Adding further report options to unittest.py

Reply
Thread Tools

Adding further report options to unittest.py

 
 
Marco Bizzarri
Guest
Posts: n/a
 
      09-10-2008
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?

Marco
--
Marco Bizzarri
http://notenotturne.blogspot.com/
http://iliveinpisa.blogspot.com/
 
Reply With Quote
 
 
 
 
Diez B. Roggisch
Guest
Posts: n/a
 
      09-10-2008
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


 
Reply With Quote
 
 
 
 
Marco Bizzarri
Guest
Posts: n/a
 
      09-10-2008
On Wed, Sep 10, 2008 at 3:25 PM, Diez B. Roggisch <> wrote:
> Marco Bizzarri wrote:
>
>> Hi all.
>>
>> I would like to change the way test reports are generated, in a Zope
>> environment.
>>

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


Nope; next time I will make a google search before posting

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



I gave it a look; it is nice and it seems powerful; I just wonder if I
need to put my hands on all my tests to do what I want to do... but
I'm sure this can be sorted in the documentation.


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



Looks like there is a new tool I need to learn... ah, nice times when
all you needed was an hammer and a screwdriver...


Thanks for the suggestion, Diez, I'll read it.


> Diez
>



--
Marco Bizzarri
http://notenotturne.blogspot.com/
http://iliveinpisa.blogspot.com/
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
gcc compiler options for K&R C code Options Utkado C Programming 2 12-18-2008 01:50 PM
OptionParser - no short options or incomplete options Bryan Richardson Ruby 6 02-25-2008 03:22 AM
Performance issue in multi-level Oracle Object/thin JDBC Options Options jacksu Java 0 10-09-2007 08:21 PM
good compile options for g++ options to enforce good coding Cliff Martin C++ 1 01-31-2007 02:03 AM
The report you requested requires further information Anna Sunny ASP .Net 0 08-20-2006 12:43 AM



Advertisments