Ben Finney wrote: > Jonathan Fine <[EMAIL PROTECTED]> writes: > >>Here's how to write some tests using Metatest. We can think of the >>tests as an executable specification. >> >> from metatest.py.mymod import plus, Point >> >> # Function plus adds two numbers. >> plus(2, 2) == 4 >> plus(2, '', _ex=TypeError) > > This second example seems counterintuitive. Is '_ex' part of the > public interface? If so, why does it follow the convention for "not > part of the public interface" (i.e. it is named with an underscore)?
Hello Ben (Well, I'm glad you seem to find the first example intuitive.) No, the function we are testing here is def plus(a, b): return a + b However, the line plus(2, '', _ex=TypeError) refers only indirectly to the function plus, to be imported from mymod. Read again the line from metatest.py.mymod import plus, Point We do some metapath magic and some __method__ tricks to ensure that here plus is what I have called a 'stub object', although 'unknown' would be a better term. See http://metatest.sourceforge.net/doc/pyconuk2007/metatest.html#slide11 http://www.python.org/dev/peps/pep-0302/ The line plus(2, '', _ex=TypeError) causes something to be recorded, and when the test is run the _ex argument is filtered off, and the remaining arguments passed to the plus function, as imported from mymod. This is done by the function split_kwargs in the module http://metatest.cvs.sourceforge.net/metatest/metatest/py/metatest/player.py?view=markup Hope this helps. If not, maybe try downloading and running it. Finally, if you can think of a better way of saying, in Python, "The function call plus(2, '') raises a TypeError", please let me know, and I'll consider using it in the next version of Metatest. -- Jonathan -- http://mail.python.org/mailman/listinfo/python-list