[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
>> [email protected]
>> 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
[email protected]
http://codespeak.net/mailman/listinfo/py-dev