verify the return value of a function
Ulrich Eckhardt
ulrich.eckhardt at dominolaser.com
Fri Jan 20 04:15:54 EST 2012
Am 19.01.2012 21:45, schrieb Jabba Laci:
> In a unit test, I want to verify that a function returns a
> cookielib.LWPCookieJar object. What is the correct way of doing that?
>
> 1) First I tried to figure out its type with type(return_value) but it
> is<type 'instance'>
I'm not sure where the problem here is and where exactly you are seeing
this. This might even indicate a problem with how the returned type is
constructed.
Anyhow:
>>> x = 1
>>> type(x)
<type 'int'>
>>> type(x) is int
True
So checking for an exact type should work using type().
> 2) return_value.__class__ .__name__ gives 'LWPCookieJar', which is bettter
It doesn't cover namespaces though. Also, you should compare that to
cookielib.LWPCookieJar.__name__, not 'LWPCookieJar'. What is the "LWP", btw?
> 3) isinstance(return_value, cookielib.LWPCookieJar) seems to be the
> best way, however somewhere I read that using isinstance is
> discouraged.
Never trust any such claim that doesn't give a justification. In your
case, that would be the right thing to do, IMHO. Promising to return an
LWPCookieJar is fulfilled when the returnvalue is of that type or a
class derived from that, which variant 1 doesn't cover.
Uli
More information about the Python-list
mailing list