[TIP] Functions for tests instead of classes

Michael Foord fuzzyman at voidspace.org.uk
Thu Mar 4 14:33:01 PST 2010


On 04/03/2010 22:03, Ryan Freckleton wrote:
> On Wed, Mar 3, 2010 at 12:15 PM, Michael Foord 
> <fuzzyman at voidspace.org.uk <mailto:fuzzyman at voidspace.org.uk>> wrote:
> <snip>
>
>     Once Holger and Benjamin have worked on their ast transformation
>     code it should be possible to add this to simpletest for better
>     failure messages with plain asserts.
>
> <snip>
>
> Does that mean we're going to get pretty asserts through ast 
> transforms? As in:

Well, not in unittest itself but in some extension of unittest...

There is an implementation that could be adapted fairly easily:

     http://bitbucket.org/hpk42/py-trunk/src/tip/py/_code/_assertionnew.py

This uses the ast module which is new in Python 2.6, but it could be 
backported to use _ast for Python 2.5. There is also an old version 
called "_assertionold.py" that uses the compiler module present in 
Python 2.4.

There is also code in nose that does something similar (stack 
introspection rather than ast transformation I *believe*) in nose. If 
unittest had a good extension API this could just be implemented as a 
unittest extension...

All the best,

Michael

>
>     assert obj.froddle() == "baz"
>
> gets transformed into like (or at least functionally equivalent to):
>
> result = object.froddle()
> expected = "baz"
> assert result == expected, "%s != %s" % (result, expected)
>
> If so, that's fantastic! The same thought crossed my mind to implement 
> that with ast transforms, but I don't have enough ast-fu to implement it.
>
>
> =====
> --Ryan E. Freckleton


-- 
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog

READ CAREFULLY. By accepting and reading this email you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies ("BOGUS AGREEMENTS") that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.idyll.org/pipermail/testing-in-python/attachments/20100304/abf1e719/attachment.htm>


More information about the testing-in-python mailing list