[EMAIL PROTECTED] wrote:
> 
> ----- Original Message -----
> From: Carl Friedrich Bolz <[EMAIL PROTECTED]>
> Date: Monday, December 17, 2007 8:25 am
> Subject: Re: [py-dev] py.test generative tests unexpected behavior
> 
>> Hi!
>>
>> j. vickroy wrote:
>> [snip]
>>> The attached file (py-test-generator-trial.py) demonstrates a 
>> behavior I 
>>> do not understand.
>> [snip]
>>
>> I don't know generative test semantics all that well, I hoped 
>> somebody 
>> else would answer this. However, my theory is as follows:
>>
>> py.test first collects all the results of the generator and then 
>> runs 
>> them all. Since your test keeps global state, the state is already 
>> changed when the first test is run. To me this sounds like 
>> reasonable 
>> behavior, global state is not good in tests anyway.
>>
>> Does that make things clearer?
>>
>> Cheers,
>>
>> Carl Friedrich
>> _______________________________________________
>> py-dev mailing list
>> py-dev@codespeak.net
>> http://codespeak.net/mailman/listinfo/py-dev
>>
> 
> Thanks, Carl.
> 
> I do understand (at least) some of the pitfalls of global state and I do
> *almost always* avoid using it.  However, in this case, I am having
> difficulty seeing why it is responsible for the observed behavior.

I think what py.test does is essentially this:

l = list(test_filters())
# at this point source.info['palette'] == 'Gray'
# and that won't change any more
for t in l:
     t[0](*t[1:]) # here the check functions are executed


> Having said that, prior to using the global *image* object, I tried to
> use the setup_module(module) function to define the *image* object but
> was unable to determine how to reference it in the test function.

You can stick the the image into the module argument that the 
setup_module function receives as first arg:

def setup_module(mod):
     mod.image = ...

After the setup, the global name 'image' is bound to ...
This wouldn't have solved your problem, though, since it is still global 
state.

[snip]

Cheers,

Carl Friedrich
_______________________________________________
py-dev mailing list
py-dev@codespeak.net
http://codespeak.net/mailman/listinfo/py-dev

Reply via email to