[TIP] Can pytest identify python code that has no test

Ned Batchelder ned at nedbatchelder.com
Thu Jan 10 16:29:53 PST 2019


There isn't a way to omit __init__.py files, but you can omit any file 
that has 100% coverage, which should include all your __init__.py files:

[report]
skip_covered = True

--Ned.

On 1/10/19 2:57 PM, DZIOBEK, JOE wrote:
>
> Hey Ned,
>
> I wrote a script to create a __pytest__.py file in every subfolder
>
> Then I execute my tox/pytest/coverage command
>
> Then I delete the __init__.py files I created
>
> This all works, except I would like to omit *all the __init__.py 
> files* in the coverage report, there are too many.
>
> *Is there a way to omit all __init__.py files, no matter how many 
> subdirectories are in its path?*
>
> I have tried various combinations and am still looking online for 
> solutions.
>
> This is what I have right now:
>
> coverage run -m --source=. pytest --ignore=virtualenv-15.1.0/ 
> --ignore=.tox
>
> coverage report -m  --omit=.tox/*
>
> Thanks - Joe
>
> *From:*Ned Batchelder [mailto:nedbat at gmail.com] *On Behalf Of *Ned 
> Batchelder
> *Sent:* Friday, January 04, 2019 4:07 PM
> *To:* DZIOBEK, JOE <jd5948 at att.com>; testing-in-python at lists.idyll.org
> *Subject:* Re: [TIP] Can pytest identify python code that has no test
>
> Coverage will only find files that it considers importable. It's 
> essential that you have __init__.py files in the subdirectories.  
> Those files can be empty, no one needs to update them.
>
> Your original output showed a __init__.py file, but this latest run 
> does not.
>
> --Ned.
>
> On 1/4/19 2:31 PM, DZIOBEK, JOE wrote:
>
>     Hi Ned,
>
>     Yes, my tox.ini file is as described earlier:
>
>     commands =
>
>     coverage run -m --source=. pytest --ignore=virtualenv-15.1.0/
>     --ignore=.tox
>
>     coverage report -m --omit=.tox/*
>
>     For additional debugging, I added another py file to my root
>     folder, so now I have:
>
>     script.py
>
>     test_script.py
>
>     scriptB2.py ( which does not have an associated test script! )
>
>     Then a subfolder (actually 5 levels deep, see below)
>
>     scriptA.py
>
>     test_scriptA.py
>
>     scriptB.py ( which does not have an associated test script! )
>
>     Executing the tox command again, I now get an improved picture:
>
>     Name Stmts   Miss  Cover   Missing
>
>     -------------------------------------------------------------------------------------------------------
>
>     sub/sub2/sub3/sub4/sub5/scriptA.py 2      0   100%
>
>     sub/sub2/sub3/sub4/sub5/test_scriptA.py 3      0   100%
>
>     script.py                        4      1    75%   3
>
>     scriptB2.py 142    142     0%   3-322
>
>     test_script.py 3      0   100%
>
>     -------------------------------------------------------------------------------------------------------
>
>     So we found the UNTESTED scriptB2.py in root folder – exactly what
>     we want.
>
>     It did not find the UNTESTED script.py in the deeper folder.
>
>     Any ideas? BTW, I don’t have any __init__.py files in any folder.
>
>     PS: Bruno, your idea with adding the import to the __init__.py
>     file is good, but requires someone to update that file, probably
>     the same person that forgot to write the test.py;
>
>     Thanks for your help,
>
>     Regards - Joe
>
>     *From:*testing-in-python-bounces at lists.idyll.org
>     <mailto:testing-in-python-bounces at lists.idyll.org>
>     [mailto:testing-in-python-bounces at lists.idyll.org] *On Behalf Of
>     *Ned Batchelder
>     *Sent:* Friday, January 04, 2019 11:59 AM
>     *To:* testing-in-python at lists.idyll.org
>     <mailto:testing-in-python at lists.idyll.org>
>     *Subject:* Re: [TIP] Can pytest identify python code that has no test
>
>     Joe, since you have specified "--source=.", coverage will search
>     your tree for importable Python files, and report on them even if
>     they are never imported.  So you are already doing the right
>     thing. I'm not sure why it wouldn't show you that file.  Are you
>     sure you are running the commands you showed?
>
>     --Ned.
>
>     On 1/4/19 11:42 AM, Bruno Oliveira wrote:
>
>         Hi Joe,
>
>         On Fri, Dec 21, 2018 at 5:06 PM DZIOBEK, JOE <jd5948 at att.com
>         <mailto:jd5948 at att.com>> wrote:
>
>             Is there a way to have this file included in the report?
>
>         You are not seeing coverage information for scriptB.py not
>         because it does not have an associated test file, but because
>         it was never imported during the run (I'm assuming).
>
>         One way to have it to appear on the report is to import
>         scriptB on your __init__.py file, this way its coverage will
>         be tracked.
>
>         Hope this helps,
>
>         Bruno
>
>
>
>
>         _______________________________________________
>
>         testing-in-python mailing list
>
>         testing-in-python at lists.idyll.org  <mailto:testing-in-python at lists.idyll.org>
>
>         http://lists.idyll.org/listinfo/testing-in-python  <https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.idyll.org_listinfo_testing-2Din-2Dpython&d=DwMDaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=HqXpIkByGFw24obqdoDmDw&m=pzoCcDdzPm0JZq_KFlE4flon2ylEw7Wn8WlOaZn3xgc&s=LZn-2waQlWLtBfotLco8eIxWEeII9mXtCXPlJ8rxaos&e=>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.idyll.org/pipermail/testing-in-python/attachments/20190110/98908dba/attachment.htm>


More information about the testing-in-python mailing list