coverage.py: "Statement coverage is the weakest measure of code coverage"

John Roth JohnRoth1 at jhrothjr.com
Mon Oct 29 13:39:30 EDT 2007


On Oct 28, 9:15 pm, Ben Finney <bignose+hates-s... at benfinney.id.au>
wrote:
> Kay Schluehr <kay.schlu... at gmx.net> writes:
> > I used to write once a coverage tool ( maybe I can factor this out
> > of my tool suite some time )
>
> That'd be wonderful. I'd like to see comparisons between different
> test-coverage tools, just as we have the different but comparable
> 'pyflakes' and 'pylint' code inspection tools.
>
> > Given it's nature it might act transformative. So a statement:
>
> > if a and b:
> >     BLOCK
>
> > can be transformed into
>
> > if a:
> >     if b:
> >         BLOCK
>
> I don't see that this actually helps in the cases described in the
> original post. The lack of coverage checking isn't "are both sides of
> an 'and' or 'or' expression evaluated", since that's the job of the
> language runtime, and is outside the scope of our unit test.
>
> what needs to be tested is "do the tests execute both the 'true' and
> 'false' branches of this 'if' statement", or "do the tests exercise
> the 'no iterations' case for this loop", et cetera. That is, whether
> all the functional branches are exercised by tests, not whether the
> language is parsed correctly.

Since 'and' and 'or' are short-circuit evaluations, you do need
something to determine if each piece was actually executed. Turning it
into an if-else construct would do this nicely.

John Roth

>
> --
>  \    "Know what I hate most? Rhetorical questions."  -- Henry N. Camp |
>   `\                                                                   |
> _o__)                                                                  |
> Ben Finney





More information about the Python-list mailing list