Cheers Guido,
Yeah I'm with you that you should not be testing *how* the function is
going about doing things... but lets say your making a function to
format string output. On the one hand your function contains everything
nicely enough, without bifurcating the code into lots of small pieces.
After all doing ' '.join(rjust(9)).bla.bla.bla is simple line of code,
but you still want to make sure you have the right format in the end. To
take a single line of code that uses a lot of the built-in string
functions and wrap it in another function seemed more trouble than it
was worth.
At least for this example, it seems funny that some of the convenience
functions on a type, when strung together can do some pretty weird
things that need checking, but nevertheless are nicely placed in the
function your are using them in. A better example is re.
T
Johnny deBris wrote:
C.T. Matsumoto wrote:
Does anyone know a good way to test function objects? It's easy enough
to test class attributes, but for some reason I'm finding it difficult
to test if a function has the right 'attributes'.
Do you mean local variables? In that case, I would suggest not to test
those - the idea is that you test whether your function does the right
thing, not _how_ it does that... You test the results of certain
arguments (both expected and unexpected), and whether the function
returns or raises the right thing when those arguments are provided, in
the most optimal situation even before you write code, what local
variables the function uses internally does not matter, as long as it
does the right thing.
To answer your question though: theoretically you could ask a function
for its constant values (foo.func_code.co_locals) and for the name of
its local variables (foo.func_code.co_varnames), then remove the first
item from the const list (not sure what that is, seems to always be
None) and remove the first items that are variables from the local
variable names list (see foo.func_code.co_argcount), or something like
that (I may be missing some things here, but I guess you'll have plenty
to play with from here. :)
Cheers,
Guido
_______________________________________________
Python-nl mailing list
Python-nl@python.org
http://mail.python.org/mailman/listinfo/python-nl
--
C.T. Matsumoto
Claes de Vrieselaan 60a III
3021 JR Rotterdam
The Netherlands
tel.: +31 (0)6 41 45 08 54
_______________________________________________
Python-nl mailing list
Python-nl@python.org
http://mail.python.org/mailman/listinfo/python-nl