Pierre Rouleau wrote: > On 11/16/06, Maciek Fijalkowski <[EMAIL PROTECTED]> wrote: > >> Pierre Rouleau wrote: >> >> >Hi all, >> > >> >Using the latest of py.test (svn 34683), I can't seem to be able to >> >control a module test setup using setup_module() as described in >> >section 2.15 of http://codespeak.net/py/current/doc/test.html >> > >> >The document gives the following example: >> > >> >def setup_module(module): >> > """ setup up any state specific to the execution >> > of the given module. >> > """ >> > >> >Now, I am assuming that the the definition of setup_module() must be >> >written /inside/ the test script that test the module-under-test >> >tested, right? >> > >> >Second, I am also assuming that setup_module's argument is the name of >> >the module-under-test. >> > >> >Given the above assumptions, if I write a test script to test roman.py >> > would be called test_roman.py and would include >> > >> >def setup_module(roman): >> > print 'SETTING up roman for testing....' >> > >> >And if I ran py.test -s test_roman.py I should be able to see the >> >printed output. I don't. >> > >> >So, what do i do wrong here? >> > >> >Thanks >> >_______________________________________________ >> >py-dev mailing list >> >py-dev@codespeak.net >> >http://codespeak.net/mailman/listinfo/py-dev >> > >> > >> Hum. I cannot reproduce you problem (I can clearly see 'SETTING up >> roman...' just after [5024] and before any dots. Yes, this is supposed >> to go to main body of testing module and it receives module object >> itself (not a name) >> > > Sorry, i also got it working if all the setup_module() does is > printing the message. > > I forgot to mention that the setup_module() was setting the value of > knownValues after declaring it global. I though that it would then be > available to all test functions (as is the case with nose), but it's > not. > > The setup_module I have looks like this: > > def setup_module(roman): > print 'SETTING UP........................' > > global knownValues > knownValues = ( (1, 'I'), > (2, 'II'), > (3, 'III'), > (4, 'IV'), > (5, 'V'), > (6, 'VI'), > (7, 'VII'), > .... > > > I wanted to know if the values set up by the setup_module function > would be available to the test functions. The test function that > fails is failing because knownValues is not accessible to the check > inside test_known_values. > > def test_known_values() : > """Test all known values.""" > > def check(number, roman_numeral): > print 'test_known_values Testing: ', roman_numeral > assert roman.toRoman(number) == roman_numeral > assert roman.fromRoman(roman_numeral) == number > # all Roman numerals should be in upper case > assert roman_numeral.upper() == roman_numeral > # lower case Roman numerals are not accepted > raises(roman.InvalidRomanNumeralError, roman.fromRoman, > roman_numeral.lower()) > > tested_numbers = [] > > # test the numbers in the table above > for number, roman_numeral in knownValues: > yield check, number, roman_numeral > tested_numbers.append(number) > > # test the others > for number in xrange(1,5000): > if number not in tested_numbers: > yield check, number, roman.toRoman(number) > > > > Note that nose is able to recover the global variable and the test > succeeds in nosetests. py.test does not seem able to do it. It's not > that I absolutely want to use global variables, but I wanted to checks > the module setup mechanism. > > -- > > P.R.
Of course tha you just write: def setup_module(mod): mod.some_global_value = whatever_you_like :-) It's of course better, because explicit is better than implicit (you avoid exporting all variables used in setup_) _______________________________________________ py-dev mailing list py-dev@codespeak.net http://codespeak.net/mailman/listinfo/py-dev