[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

Decorators and buffer flushing

Ethan Metsger

2/28/2008 5:50:00 PM

Hi, all.

I apologize for what is perhaps a newb question. I'm in the process of
transitioning our testing framework from Perl to Python. While that alo=
ne
probably sets off some red flags, I'm afraid it's what I'm stuck with.

I'm modeling a test with five operations: build, execute, validate,
publish, and clean. The main loop might look something like this:

with Test(...) as t:
t.build()
t.execute()
t.validate()
t.publish()

At each run, I want to output a '.' to denote completion of that test
step. I've been able to do this, sort of, using the following decorator=

(edited for brevity):

def report(f):

def new(self):
stat =3D f(self);

if stat is True:
sys.stdout.write ('.')

else:
...

sys.stdout.flush()

return new

(Each one of the test functions returns True or False depending on its
completion status.)

The problem is that rather than outputting a period after each step is
completed, it outputs all four of them at once. Instead of seeing
progress as it happens, I get it when it's finished, even though I'm
flushing the output buffer.

Any thoughts?


Best,

Ethan (emetsger@obj-sys.com)
http://uppertank.n...