Coverage.py with Ned Batchelder

The Python Podcast.__init__

Episode | Podcast

Date: Sat, 05 Aug 2017 21:00:00 -0400

<h3>Summary</h3> <p>We write tests to make sure that our code is correct, but how do you make sure the tests are correct? This week Ned Batchelder explains how coverage.py fills that need, how he became the maintainer, and how it works under the hood.</p> <h3>Preface</h3> <ul> <li>Hello and welcome to Podcast.&#95;&#95;init&#95;&#95;, the podcast about Python and the people who make it great.</li> <li>I would like to thank everyone who supports us on <a href="https://www.pythonpodcast.com/podcastinit?utm_source=rss&amp;utm_medium=rss">Patreon</a>. Your contributions help to make the show sustainable.</li> <li>When you&#8217;re ready to launch your next project you&#8217;ll need somewhere to deploy it. Check out Linode at <a href="https://www.pythonpodcast.com/linode?utm_source=rss&amp;utm_medium=rss">www.podastinit.com/linode?utm_source=rss&amp;utm_medium=rss</a> and get a $20 credit to try out their fast and reliable Linux virtual servers for running your awesome app.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">site</a> to subscribe to the show, sign up for the newsletter, read the show notes, and get in touch.</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">iTunes</a>, or <a href="https://play.google.com/music/m/I7ogju4xv6adasgqz6545jndgsy?t=Podcastinit_-_Python_and_the_people_who_make_it_great&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Google Play Music</a>, tell your friends and co-workers, and share it on social media.</li> <li>Your host as usual is Tobias Macey and today I&#8217;m interviewing Ned Batchelder about coverage.py, the ubiquitous tool for measuring your test coverage.</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>What is coverage.py and how did you get involved with the project?</li> <li>The coverage project has become the de facto standard for measuring test coverage in Python. Why do you think that is?</li> <li>What is the utility of measuring test coverage?</li> <li>What are the downsides to measuring test coverage?</li> <li>One of the notable capabilities that was introduced recently was the plugin for measuring coverage of Django templates. Why is that an important capability and how did you manage to make that work?</li> <li>How does coverage conduct its measurements and how has that algorithm evolved since you first started work on it?</li> <li>What are the most challenging aspects of building and maintaining coverage.py?</li> <li>While I was looking at the bug tracker I was struck by the vast array of contexts in which coverage is used. Do you find it overwhelming trying to support so many operating systems and Python implementations?</li> <li>What might be added to coverage in the future?</li> </ul> <h3>Keep In Touch</h3> <ul> <li><a href="https://twitter.com/nedbat?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@nedbat</a> on Twitter</li> <li><a href="https://nedbatchelder.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Website</a></li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://github.com/bastibe/org-journal?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Org-Journal</a></li> </ul> </li> <li>Ned <ul> <li><a href="https://hypothesis.readthedocs.io/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Hypothesis</a></li> <li><a href="http://www.bbc.co.uk/programmes/b00snr0w?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Infinite Monkey Cage</a></li> </ul> </li> </ul> <h3>Links</h3> <ul> <li><a href="https://www.edx.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">edX</a></li> <li><a href="https://en.wikipedia.org/wiki/Lotus_Software?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Lotus Notes</a></li> <li><a href="http://www.zope.org/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Zope</a></li> <li><a href="https://coverage.readthedocs.io/en/coverage-4.4.1/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Coverage.py</a></li> <li><a href="http://garethrees.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Gareth Rees</a></li> <li><a href="https://docs.python.org/3/library/trace.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Trace in stdlib</a></li> <li><a href="http://darcs.idyll.org/~t/projects/figleaf/doc/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Fig Leaf</a></li> <li><a href="https://en.wikipedia.org/wiki/Finite-state_machine?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">State Machines</a></li> <li><a href="https://codecov.io/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CodeCov</a></li> <li><a href="https://coveralls.io/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Coveralls</a></li> <li><a href="http://cobertura.github.io/cobertura/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Cobertura</a></li> <li><a href="https://en.wikipedia.org/wiki/Turing_completeness?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Turing Completeness</a></li> <li><a href="https://docs.djangoproject.com/en/1.11/topics/templates/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Django Templates</a></li> <li><a href="http://jinja.pocoo.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Jinja2</a></li> <li><a href="http://www.makotemplates.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Mako</a></li> <li><a href="http://docs.hylang.org/en/stable/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Hy-lang</a></li> <li><a href="https://en.wikipedia.org/wiki/Gcov?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">GCov</a></li> <li><a href="http://www.jython.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Jython</a></li> <li><a href="https://www.codetriage.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Code Triage Service</a></li> <li><a href="https://nedbatchelder.com/blog/201612/who_tests_what.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Who Tests What</a></li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a><img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fwww.pythonpodcast.com%2Fcoverage-py-with-ned-batchelder-episode-121%2F&amp;action_name=Coverage.py+with+Ned+Batchelder+-+Episode+121&amp;urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&amp;utm_source=rss&amp;utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" /></p>