Verifying assertion failures

Gustavo Niemeyer niemeyer at conectiva.com
Sat May 19 23:38:52 EDT 2001


Hi Andrew!

> No there isn't, unless you specify it.  Why would it
> be nice (give an example from real code)?

I'm working on a test framework. I'd like to use assertions
as one of the ways to know that something has failed in a
test. It'd be nice to put in the logs *what* exactly went
wrong, so that the guy checking the problems may solve the
case as fast as possible. I don't think this is abusive
use of assertions, since that's exactly what they exist
for... checking that something that *should* be in some
way is really that way, and failing otherwise. Logging the
assertion that has failed is useful for me and probably
will be for others as well.

> Suppose it is implemented.  What is the content of that
> exception when done in the context of
> 
>   a = 0
>   b = 1
>   assert a == b == (a == math.sqrt(a))
> ?
> 
> I can think of two possibilities
> 
> The first is to use the string
>  "a == b == (a == math.sqrt(a))"
> [...]
> 

> that is, to use the exact text representation of the
> exception.  Since assertions should not occur in working
> code, this would be used for debugging.  Since you have
> the source code when debugging, this information comes
> up in the stack trace, or you can use the same methods
> to write a function to get that code.

Yes that's the implementation I was thinking of. Notice that,
specifically in my case, the guy doing the debuggings will
also look for the bug in the environment the framework is
testing. 

> The second is to somehow insert actual values for the
> different part of the assertion, as in using the text
>   0 == 1 == (0 == math.sqrt(0))
[...]

Hummm.. no, that's not what I had in mind. This wouldn't
help much. Think about something like:

assert a == b
assert c == d

Then... Oops! "assert 0 == 1" has failed!! :-)

And, as you mentioned, there's other reasons of why to not
do this.

Thanks for your thoughts Andrew!

-- 
Gustavo Niemeyer

[ 2AAC 7928 0FBF 0299 5EB5  60E2 2253 B29A 6664 3A0C ]




More information about the Python-list mailing list