<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>PythonTest</title>
    <link>https://pythontest.com/</link>
    <description>Recent content on PythonTest</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 04 Mar 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://pythontest.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Explore Python dependencies with `pipdeptree` and `uv pip tree`</title>
      <link>https://pythontest.com/pipdeptree-uv-pip-tree/</link>
      <pubDate>Tue, 11 Nov 2025 07:24:00 +0800</pubDate>
      <guid>https://pythontest.com/pipdeptree-uv-pip-tree/</guid>
      <description>&lt;p&gt;Sometimes you just want to know about your dependencies, and their dependencies.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been using &lt;code&gt;pipdeptree&lt;/code&gt; for a while, but recently switched to &lt;code&gt;uv pip tree&lt;/code&gt;.&lt;br&gt;&#xA;Let&amp;rsquo;s take a look at both tools.&lt;/p&gt;&#xA;&lt;h2 id=&#34;pipdeptree&#34;&gt;pipdeptree&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;pipdeptree&lt;/code&gt; is pip installable, but I don&amp;rsquo;t want &lt;code&gt;pipdeptree&lt;/code&gt; itself to be reported alongside everything else installed, so I usually install it outside of a project. We can use it system wide by:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Installing with &lt;code&gt;uv tool install pipdeptree&lt;/code&gt;.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Then running with &lt;code&gt;pipdeptree --python auto&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Running without installing with &lt;code&gt;uvx pipdeptree --python auto&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;usage&#34;&gt;usage&lt;/h3&gt;&#xA;&lt;p&gt;The &lt;code&gt;--python auto&lt;/code&gt; tells &lt;code&gt;pipdeptree&lt;/code&gt; to look at the current environment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Announcing the Lean TDD book</title>
      <link>https://pythontest.com/announcing-lean-tdd/</link>
      <pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/announcing-lean-tdd/</guid>
      <description>&lt;p&gt;There are many great ideas that I&amp;rsquo;ve gotten from TDD, Lean, Pragmatic, and more.&#xA;For the past few years, I&amp;rsquo;ve really wanted to write a book about TDD, with an emphasis on using Lean teachings to cut out all the waste, and then grow TDD into more of a project wide process.&lt;/p&gt;&#xA;&lt;p&gt;To motivate myself to just get it done finally, I&amp;rsquo;ve started.&#xA;And I&amp;rsquo;m using a holistic project wide process.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Polite lazy imports for Python package maintainers</title>
      <link>https://pythontest.com/polite-lazy-imports-python-packages/</link>
      <pubDate>Sun, 26 Oct 2025 23:13:00 +0800</pubDate>
      <guid>https://pythontest.com/polite-lazy-imports-python-packages/</guid>
      <description>&lt;p&gt;If you are a maintainer of a Python package, it&amp;rsquo;s nice if you pay attention to the time it takes to import your package.&lt;/p&gt;&#xA;&lt;p&gt;Further, if you&amp;rsquo;ve got a Python package with multiple components where it&amp;rsquo;s probable that many users will only use part of the package, then it&amp;rsquo;s super nice if you set up your  &lt;code&gt;__init__.py&lt;/code&gt; files for lazy importing.&lt;/p&gt;&#xA;&lt;h2 id=&#34;previously---lazy-importing-other-packages&#34;&gt;Previously - lazy importing other packages&lt;/h2&gt;&#xA;&lt;p&gt;In &lt;a href=&#34;https://pythontest.com/python-lazy-imports-now&#34;&gt;Python lazy imports you can use today&lt;/a&gt;, I discussed:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python lazy imports you can use today</title>
      <link>https://pythontest.com/python-lazy-imports-now/</link>
      <pubDate>Mon, 13 Oct 2025 19:00:00 +0800</pubDate>
      <guid>https://pythontest.com/python-lazy-imports-now/</guid>
      <description>&lt;p&gt;There&amp;rsquo;s a proposal, &lt;a href=&#34;https://peps.python.org/pep-0810/&#34;&gt;PEP 810 – Explicit lazy imports&lt;/a&gt; for Python to natively support lazy importing starting in Python 3.15.&lt;/p&gt;&#xA;&lt;p&gt;However, it has not been accepted yet, and even if it is accepted, 3.15 is a year away.&#xA;What do we do now?&lt;/p&gt;&#xA;&lt;p&gt;The techniques covered in this post that allow you to use lazy importing NOW with Python 3.13, Python 3.12, &amp;hellip;, really every version of Python.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s look at a small code example that imports something.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Python 3.14 on Mac or Windows</title>
      <link>https://pythontest.com/python/installing-python-3-14/</link>
      <pubDate>Fri, 10 Oct 2025 20:14:00 +0800</pubDate>
      <guid>https://pythontest.com/python/installing-python-3-14/</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;The easiest way to install Python 3.14 (or 3.13, 3.12, 3.11, 3.10, 3.10, &amp;hellip;)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;I originally wrote this post in 2022 for Python 3.11.&lt;br&gt;&#xA;From 2022 through 2024, I remained of the belief that installing from python.org was the best option for most people.&lt;/p&gt;&#xA;&lt;p&gt;However, 2025 changed that for me, with &lt;code&gt;uv&lt;/code&gt; and &lt;code&gt;uv python&lt;/code&gt; supporting the installation of Python versions. It&amp;rsquo;s a really pleasant and clean way to keep Python versions up to date and install new versions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing against Python 3.14</title>
      <link>https://pythontest.com/testing-with-python-3-14/</link>
      <pubDate>Fri, 10 Oct 2025 16:10:00 +0800</pubDate>
      <guid>https://pythontest.com/testing-with-python-3-14/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://docs.python.org/3.14/whatsnew/3.14.html#what-s-new-in-python-3-14&#34;&gt;Python 3.14&lt;/a&gt; is here.&lt;/p&gt;&#xA;&lt;p&gt;If you haven&amp;rsquo;t done so, it&amp;rsquo;s time to update your projects to test against 3.14.&lt;/p&gt;&#xA;&lt;p&gt;The following procedure is what I&amp;rsquo;m following for a handful of projects. Your process of course may be different if you use different tools.&lt;/p&gt;&#xA;&lt;p&gt;Honestly, I&amp;rsquo;m partly writing this down so I don&amp;rsquo;t have to remember it all in a year when 3.15 rolls around.&lt;/p&gt;&#xA;&lt;h2 id=&#34;installing-python-314&#34;&gt;Installing Python 3.14&lt;/h2&gt;&#xA;&lt;h3 id=&#34;installing-with-uv&#34;&gt;Installing with uv&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;uv self update&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;uv python install 3.14&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;While it&amp;rsquo;s true that creating a virtual environment with &lt;code&gt;uv venv .venv --python 3.14&lt;/code&gt; will install 3.14 if it isn&amp;rsquo;t already there, you still gotta run &lt;code&gt;uv self update&lt;/code&gt;. So I just usually install it while I&amp;rsquo;m at it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest-check 2.6.0 release</title>
      <link>https://pythontest.com/pytest-check-2-6-0/</link>
      <pubDate>Mon, 06 Oct 2025 21:30:00 +0800</pubDate>
      <guid>https://pythontest.com/pytest-check-2-6-0/</guid>
      <description>&lt;p&gt;There&amp;rsquo;s a new release of &lt;a href=&#34;https://github.com/okken/pytest-check&#34;&gt;pytest-check&lt;/a&gt;. Version 2.6.0.&lt;/p&gt;&#xA;&lt;p&gt;This is a cool contribution from the community.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-problem&#34;&gt;The problem&lt;/h2&gt;&#xA;&lt;p&gt;In July, &lt;a href=&#34;https://github.com/bluenote10&#34;&gt;bluenote10&lt;/a&gt; reported that &lt;code&gt;check.raises()&lt;/code&gt; doesn&amp;rsquo;t behave like &lt;code&gt;pytest.raises()&lt;/code&gt; in that the &lt;code&gt;AssertionError&lt;/code&gt; returned from &lt;code&gt;check.raises()&lt;/code&gt; doesn&amp;rsquo;t have a queryable &lt;code&gt;value&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Example of &lt;code&gt;pytest.raises()&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pytest&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raises&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;Exception&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;do_something&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;assert&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;expected error message&amp;gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We&amp;rsquo;d like &lt;code&gt;check.raises()&lt;/code&gt; to act similarly:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;check&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raises&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;Exception&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;do_something&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;assert&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;expected error message&amp;gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But that didn&amp;rsquo;t work prior to 2.6.0. The issue was that the value returned from &lt;code&gt;check.raises()&lt;/code&gt; didn&amp;rsquo;t have any &lt;code&gt;.value&lt;/code&gt; atribute.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Timeline of Selected Software Events</title>
      <link>https://pythontest.com/timeline-selected-software-events/</link>
      <pubDate>Sat, 13 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/timeline-selected-software-events/</guid>
      <description>&lt;p&gt;There are a lot of events in the history of software development.&#xA;This is a list of dates that have some significance in either the stuff I work with or methodologies.&#xA;I&amp;rsquo;ve compiled this list for my own benefit in thinking about my history and how these things have led to my current software philosophies.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m publishing the list as a &amp;ldquo;what the heck, why not?&amp;rdquo; kinda thing.&#xA;If I&amp;rsquo;ve gotten something wrong, feel free to &lt;a href=&#34;https://pythontest.com/contact&#34;&gt;contact me&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People podcast now at pythontest.com/pythonpeople</title>
      <link>https://pythontest.com/python-people-moved/</link>
      <pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/python-people-moved/</guid>
      <description>&lt;p&gt;Like the recent &lt;a href=&#34;https://pythontest.com/test-and-code-archive-up&#34;&gt;archival of Test and Code&lt;/a&gt;, the Python People podcast has also moved. Python People is now at &lt;a href=&#34;https://pythontest.com/pythonpeople&#34;&gt;pythontest.com/pythonpeople&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Is it also archived? As in done?&lt;/p&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t think so. I think I might start that up again at some point.&lt;/p&gt;&#xA;&lt;p&gt;But for now, it&amp;rsquo;s on a long-ish term pause.&lt;/p&gt;&#xA;&lt;p&gt;BTW, the RSS feeds for both Python People and Test and Code should be redirected correctly, so you shouldn&amp;rsquo;t have to change anything in your podcast player.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code Archive is now available</title>
      <link>https://pythontest.com/test-and-code-archive-up/</link>
      <pubDate>Mon, 01 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/test-and-code-archive-up/</guid>
      <description>&lt;p&gt;I really appreciate all of the positive feedback I&amp;rsquo;ve gotten when I announced that I was stopping the Test &amp;amp; Code podcast.&#xA;I mean, I didn&amp;rsquo;t get any &amp;ldquo;good idea, you that&amp;rsquo;s a terrible show&amp;rdquo; feedback, thankfully.&lt;br&gt;&#xA;But I did get a lot of people saying that I should keep it alive somehow.&lt;/p&gt;&#xA;&lt;p&gt;So, it&amp;rsquo;s now archived here: &lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Archive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;That link also includes a link to the xml that you need if you want to plop that into the &amp;ldquo;subscribe via URL&amp;rdquo; box on really any podcast player.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 238 - So Long, and Thanks for All the Fish</title>
      <link>https://pythontest.com/testandcode/episodes/so-long-and-thanks-for-all-the-fish/</link>
      <pubDate>Fri, 15 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/so-long-and-thanks-for-all-the-fish/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/238.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A farewell to a fun 10 years.&lt;/p&gt;&lt;p&gt;Also, I should have tested it better. :)&lt;br&gt;In the audio I got the numbers wrong.  Doh!&lt;br&gt;This is episode 238, not 237. Oh well.&lt;/p&gt;&lt;p&gt;I&#39;ll still be around, of course, at:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pythontest.com&#34;&gt;pythontest.com&lt;/a&gt; - where I write about developing software with tests&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pythonbytes.fm&#34;&gt;pythonbytes.fm &lt;/a&gt;- Python news and headlines, delivered directly to your earbuds&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Thanks for all the fun over the last 10 years.&lt;br&gt;I wish you the best.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 237 - FastAPI Cloud - Sebastián Ramírez</title>
      <link>https://pythontest.com/testandcode/episodes/fastapi-cloud/</link>
      <pubDate>Mon, 11 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/fastapi-cloud/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/237.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In this episode, Brian interviews Sebastián Ramírez, creator of FastAPI, about its rapid rise in developer popularity and the launch of FastAPI Cloud. Sebastian explains how FastAPI Cloud addresses deployment challenges small teams face. He shares his transition from open-source to startup founder, focusing on simplifying deployment against the complexity of tools like Kubernetes.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://fastapicloud.work&#34;&gt;FastAPI Cloud&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://fastapi.tiangolo.com&#34;&gt;FastAPI&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://sqlmodel.tiangolo.com&#34;&gt;SQLModel&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://typer.tiangolo.com&#34;&gt;Typer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.openapis.org&#34;&gt;OpenAPI&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://docs.pydantic.dev/latest/&#34;&gt;Pydantic&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://sequoiacap.com/oss/&#34;&gt;Sequoia Open Source Fellowship&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest fixtures nuts and bolts - revisited</title>
      <link>https://pythontest.com/pytest-fixtures-nuts-bolts-revisited/</link>
      <pubDate>Wed, 06 Aug 2025 06:13:00 -0700</pubDate>
      <guid>https://pythontest.com/pytest-fixtures-nuts-bolts-revisited/</guid>
      <description>&lt;p&gt;In 2013/2014 I wrote a 4 part series on pytest fixtures.&lt;br&gt;&#xA;It started out fine-ish. And then by part 4 I crammed way too many concepts into one huge post.&lt;/p&gt;&#xA;&lt;p&gt;Well, I&amp;rsquo;ve recently reviewed all of this, and&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;split the posts into one concept each&lt;/li&gt;&#xA;&lt;li&gt;made sure all of the info was correct for modern versions of Python and pytest&lt;/li&gt;&#xA;&lt;li&gt;reran the examples to make sure the output is correct&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s the new/old series:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 236 - Git Tips for Testing - Adam Johnson</title>
      <link>https://pythontest.com/testandcode/episodes/git-tips-for-testing/</link>
      <pubDate>Wed, 30 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/git-tips-for-testing/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/236.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In this episode, host Brian Okken and guest Adam Johnson explore essential Git features, highlighted by Adam&#39;s updated book, &#34;Boost Your Git DX.&#34; &lt;/p&gt;&lt;p&gt;Key topics include &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&#34;cherry picking&#34; for selective commits&lt;/li&gt;&lt;li&gt;&#34;git stash&#34; for managing in-progress work&lt;/li&gt;&lt;li&gt;&#34;git diff&#34;, and specifically its `--name-only` flag, which provides a streamlined method for developers to identify which files have changed, which can be used to determine which tests need to be run&lt;/li&gt;&lt;li&gt;&#34;git bisect&#34; for efficiently pinpointing bugs. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This conversation offers valuable strategies for developers at any skill level to enhance their Git proficiency and optimize their coding workflows.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 235 - pytest-django - Adam Johnson</title>
      <link>https://pythontest.com/testandcode/episodes/pytest-django/</link>
      <pubDate>Tue, 22 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/pytest-django/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/235.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In this episode, special guest Adam Johnson joins the show and examines pytest-django, a popular plugin among Django developers. He highlights its advantages over the built-in unittest framework, including improved test management and debugging. Adam addresses transition challenges, evolving fixture practices, and offers tips for optimizing test performance. This episode is a concise guide for developers looking to enhance their testing strategies with pytest-django.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Time Machine back to 2012</title>
      <link>https://pythontest.com/time-machine-to-2012/</link>
      <pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/time-machine-to-2012/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m doing some blog cleanup.&lt;/p&gt;&#xA;&lt;h2 id=&#34;new-look&#34;&gt;New look&lt;/h2&gt;&#xA;&lt;p&gt;I just recently have this shiny new theme for the blog.&lt;br&gt;&#xA;I&amp;rsquo;m really loving the colors, and the ability to shamelessly plug my courses in the right side-bar. (Below the content if you&amp;rsquo;re reading on mobile).&lt;/p&gt;&#xA;&lt;h2 id=&#34;new-analytics&#34;&gt;New analytics&lt;/h2&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t want to track anyone.&lt;/p&gt;&#xA;&lt;p&gt;But I do want to know:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;which posts are popular&lt;/li&gt;&#xA;&lt;li&gt;which not so much&lt;/li&gt;&#xA;&lt;li&gt;what are people 404-ing on&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;To that end, I was using Netlify server side analytics.&lt;br&gt;&#xA;It was ok, but also rather restrictive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unravelling t-strings with pytest</title>
      <link>https://pythontest.com/unravelling-t-strings-pytest/</link>
      <pubDate>Mon, 26 May 2025 09:22:00 +0800</pubDate>
      <guid>https://pythontest.com/unravelling-t-strings-pytest/</guid>
      <description>&lt;p&gt;Brett Cannon recently released a great article explaining how Python 3.14&amp;rsquo;s new t-strings work.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s the article: &lt;a href=&#34;https://snarky.ca/unravelling-t-strings/&#34;&gt;Unravelling t-strings&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;He built up the functionality of how t-strings work in a way that you can follow along even if you don&amp;rsquo;t have 3.14.0b1 (where t-strings are instroduced), all the way up to the last example.&lt;/p&gt;&#xA;&lt;p&gt;He walks through&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Evaluating the Python expression&lt;/li&gt;&#xA;&lt;li&gt;Applying specified conversions&lt;/li&gt;&#xA;&lt;li&gt;Applying format specs&lt;/li&gt;&#xA;&lt;li&gt;Using an Interpolation class to hold details of replacement fields&lt;/li&gt;&#xA;&lt;li&gt;Using Template class to hold parsed data&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The end result is very close to an &lt;a href=&#34;https://peps.python.org/pep-0750/#example-implementing-f-strings-with-t-strings&#34;&gt;example used in PEP 750&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 234 - pytest-metadata - provides access to test session metadata</title>
      <link>https://pythontest.com/testandcode/episodes/pytest-metadata/</link>
      <pubDate>Wed, 07 May 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/pytest-metadata/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/234.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest-metadata is described as a plugin for pytest that provides access to test session metadata. &lt;br&gt;That is such a humble description for such a massively useful plugin. &lt;br&gt;If you&#39;re already using pytest-html, you have pytest-metadata already installed, as pytest-metadata is one of the dependencies for pytest-html.&lt;br&gt;However, pytest-metadata is very useful even on its own.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pypi.org/project/pytest-metadata/&#34;&gt;pytest-metadata&lt;/a&gt; - The plugin we&#39;re talking about in this episode&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pypi.python.org/pypi/pytest-base-url/&#34;&gt;pytest-base-url&lt;/a&gt; - Adds the base URL to the metadata.&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pypi.python.org/pypi/pytest-html/&#34;&gt;pytest-html&lt;/a&gt; - Displays the metadata at the start of each report. &lt;ul&gt;&lt;li&gt;See &lt;a href=&#34;https://pythontest.com/testandcode/episodes/pytest-html&#34;&gt;S2:E6: pytest-html - a plugin that generates HTML reports for test results&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pypi.org/project/pytest-reporter-html1/&#34;&gt;pytest-reporter-html1&lt;/a&gt; - Presents metadata as part of the report.&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pypi.python.org/pypi/pytest-selenium/&#34;&gt;pytest-selenium&lt;/a&gt; - Adds the driver, capabilities, and remote server to the metadata.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you&#39;ve got other plugins that work well with pytest-metadata, please &lt;a href=&#34;https://pythontest.com/contact/&#34;&gt;let me know&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 233 - pytest-check - allow multiple failures per test</title>
      <link>https://pythontest.com/testandcode/episodes/pytest-check/</link>
      <pubDate>Fri, 02 May 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/pytest-check/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/233.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest-check is a pytest plugin that allows multiple failures per test.&lt;/p&gt;&lt;p&gt;&lt;br&gt;Normally, a test function will fail and stop running with the first failed assert. That&#39;s totally fine for tons of kinds of software tests. However, there are times where you&#39;d like to check more than one thing, and you&#39;d really like to know the results of each check, even if one of them fails.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 232 - The role of AI in software testing - Anthony Shaw</title>
      <link>https://pythontest.com/testandcode/episodes/ai-role-software-testing/</link>
      <pubDate>Fri, 25 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/ai-role-software-testing/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/232.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;AI is helping people write code.  &lt;br&gt;Tests are one of those things that some people don&#39;t like to write.   &lt;/p&gt;&lt;p&gt;Can AI play a role in creating automated software tests?  &lt;br&gt;Well, yes. But it&#39;s a nuanced yes.  &lt;/p&gt;&lt;p&gt;Anthony Shaw comes on the show to discuss the topic and try to get AI to write some test for my very own cards project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 231 - pytest-repeat - works fine on Python 3.14</title>
      <link>https://pythontest.com/testandcode/episodes/pytest-repeat-works-fine-on-python-3-14/</link>
      <pubDate>Thu, 10 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/pytest-repeat-works-fine-on-python-3-14/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/231.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest-repeat &lt;/p&gt;&lt;ul&gt;&lt;li&gt;is a pytest plugin that makes it easy to repeat a single test, or multiple tests, a specific number of times.  &lt;/li&gt;&lt;li&gt;works fine on Python 3.14&lt;/li&gt;&lt;li&gt;is tested on Python 3.9-3.14&lt;/li&gt;&lt;li&gt;probably works fine still on 3.7 &amp; 3.8&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This episode also discusses the attempted April Fools episode.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pytest-dev/pytest-repeat&#34;&gt;pytest-repeat&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The April Fools episode: &lt;a href=&#34;https://pythontest.com/testandcode/episodes/python-3-14-wont-repeat-with-pytest-repeat&#34;&gt;Python 3.14 won&#39;t repeat with pytest-repeat&lt;strong&gt;&lt;br&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 230 - Python 3.14 won&#39;t repeat with pytest-repeat</title>
      <link>https://pythontest.com/testandcode/episodes/python-3-14-wont-repeat-with-pytest-repeat/</link>
      <pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/python-3-14-wont-repeat-with-pytest-repeat/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/230.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest-repeat is a pytest plugin that makes it easy to repeat a single test, or multiple tests, a specific number of times.  &lt;/p&gt;&lt;p&gt;Note: This was an April Fools attempt, so the statement ...&lt;br&gt;&#34;Unfortunately, it doesn&#39;t seem to work with Python 3.14, even though there is no rational reason why it shouldn&#39;t work.&#34; &lt;br&gt;... is NOT true.&lt;/p&gt;&lt;p&gt;Listen to the NEXT episode to get an explanation&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 229 - pytest-html - a plugin that generates HTML reports for test results</title>
      <link>https://pythontest.com/testandcode/episodes/pytest-html/</link>
      <pubDate>Thu, 27 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/pytest-html/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/229.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest-html has got to be one of my all time favorite plugins. &lt;br&gt;pytest-html is a plugin for pytest that generates a HTML report for test results. &lt;br&gt;This episode digs into some of the super coolness of pytest-html.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pytest-html.readthedocs.io/&#34;&gt;pytest-html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pytest-dev/pytest-html/blob/master/README.rst&#34;&gt;repo readme with screenshot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pytest-html.readthedocs.io/en/latest/user_guide.html#enhancing-reports&#34;&gt;enhancing reports&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pytest-dev/pytest-metadata/tree/master&#34;&gt;pytest-metadata&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Transcript&lt;/summary&gt;&#xA;&lt;p&gt;pytest-html has got to be one of my all-time favorite plugins. pytest-html is a plugin for pytest that generates an HTML report for test results. This episode digs into some of the super coolness of this plugin. Getting started with pytest-html is easy enough. You just run pytest with an &amp;ndash;html flag and give it a file name, like something like report.html or something, and it will generate a report. By default, it actually puts a bunch of the extra stuff, like the CSS and everything, into a directory. But you can pass in a flag, &amp;ndash;self-contained-html, and it will stick all of that into one file.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 228 - pytest-md and pytest-md-report - Markdown reports for pytest</title>
      <link>https://pythontest.com/testandcode/episodes/markdown-reports-pytest-md-pytest-md-report/</link>
      <pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/markdown-reports-pytest-md-pytest-md-report/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/228.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Markdown reports as either text or markdown tables.&lt;br&gt;Two fun plugins discussed.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pypi.org/project/pytest-md-report&#34;&gt;pytest-md-report&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pypi.org/project/pytest-md&#34;&gt;pytest-md&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/top-pytest-plugins/&#34;&gt;Top pytest Plugins&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Transcript&lt;/summary&gt;&#xA;&lt;p&gt;The standard pytest output is actually pretty good. It&amp;rsquo;s come a long way since I started using pytest. There&amp;rsquo;s nice percentages if even by default, you can see the test files that ran and all the test cases themselves show up as dots for passing. And and then a percent of the the test suite complete shows up on the right. And it&amp;rsquo;s pretty nice, actually.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 227 - Mocking in Python with unittest.mock - Michael Foord</title>
      <link>https://pythontest.com/testandcode/episodes/unittest-mock/</link>
      <pubDate>Fri, 07 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/unittest-mock/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/227.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This episode is a replay of a 2021 interview I did with Michael Foord.&lt;br&gt;We lost Michael in January, and I&#39;d like to revisit this interview as a tribute. &lt;/p&gt;&lt;p&gt;Michael Foord was a pivotal figure in the Python community and the creator of the mock library that&#39;s now unittest.mock. &lt;br&gt;But he did so much more as well. &lt;br&gt;His contributions continue to resonate within the developer community. &lt;br&gt;This interview is just a small peek at his influence. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 226 - pytest-mock - Mocking in pytest</title>
      <link>https://pythontest.com/testandcode/episodes/pytest-mock/</link>
      <pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/pytest-mock/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/226.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest-mock is currently the #3 pytest plugin. &lt;br&gt;pytest-mock is a wrapper around unittest.mock.&lt;/p&gt;&lt;p&gt;In this episode:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Why the pytest-mock plugin is awesome&lt;/li&gt;&lt;li&gt;What is mocking, patching, and monkey patching&lt;/li&gt;&lt;li&gt;What, if any, is the difference between mock, fake, spy, stub. &lt;/li&gt;&lt;li&gt;Why we might need these in testing&lt;/li&gt;&lt;li&gt;Some history of mock in Python and how mock became unittest.mock&lt;/li&gt;&lt;li&gt;From unittest.mock&lt;ul&gt;&lt;li&gt;patch.object&lt;/li&gt;&lt;li&gt;patch.object with autospec&lt;/li&gt;&lt;li&gt;using these as context managers&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;pytest-mock:&lt;ul&gt;&lt;li&gt;The mocker fixture &lt;/li&gt;&lt;li&gt;Cleanup in teardown&lt;/li&gt;&lt;li&gt;Using mocker.patch, mocker.spy, and mocker.stub&lt;/li&gt;&lt;li&gt;Why it&#39;s awesome and why you might want to use it over straight unittest.mock&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Links:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 225 - pytest-cov - The pytest plugin for measuring coverage</title>
      <link>https://pythontest.com/testandcode/episodes/pytest-cov/</link>
      <pubDate>Thu, 23 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/pytest-cov/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/225.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest-cov is a pytest plugin that helps produce coverage reports using Coverage.py.&lt;/p&gt;&lt;p&gt;In this episode, we&#39;ll discuss:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;what Coverage.py is&lt;/li&gt;&lt;li&gt;why you should measure code coverage on both your source and test code&lt;/li&gt;&lt;li&gt;what pytest-cov is&lt;/li&gt;&lt;li&gt;extra features pytest-cov gives you over and above coverage.py&lt;/li&gt;&lt;li&gt;and generally why using both is awesome&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://coverage.readthedocs.io&#34;&gt;coverage.py&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pytest-cov.readthedocs.io&#34;&gt;pytest-cov&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pytest-cov.readthedocs.io/en/latest/contexts.html&#34;&gt;how to set up context reports&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/top-pytest-plugins/&#34;&gt;Top pytest Plugins&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Errata:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;I mentioned that Coverage has the ability to show context (which line is covered by which test) for the past year or so.&lt;ul&gt;&lt;li&gt;However, that feature was released in Oct 2018. &lt;a href=&#34;https://coverage.readthedocs.io/en/7.6.10/changes.html#version-5-0a3-2018-10-06&#34;&gt;coverage 5.0 alpha&lt;/a&gt; &lt;/li&gt;&lt;li&gt;That&#39;s over 6 years. Oops. Sorry Ned.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 224 - pytest plugins - a full series</title>
      <link>https://pythontest.com/testandcode/episodes/pytest-plugins/</link>
      <pubDate>Fri, 10 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/pytest-plugins/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/224.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This episode kicks off a series on pytest plugins.&lt;/p&gt;&lt;p&gt;In this episode:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Introduction to pytest plugins&lt;/li&gt;&lt;li&gt;The pytest.org pytest plugin list&lt;/li&gt;&lt;li&gt;Finding pytest related packages on PyPI&lt;/li&gt;&lt;li&gt;The Top pytest plugins list on pythontest.com&lt;/li&gt;&lt;li&gt;Exploring popular plugins&lt;/li&gt;&lt;li&gt;Learning from plugin examples&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/top-pytest-plugins/&#34;&gt;Top pytest plugins list&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://docs.pytest.org/en/stable/reference/plugin_list.html&#34;&gt;pytest.org plugin list&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://hugovk.github.io/top-pypi-packages/&#34;&gt;Top PyPI Packages&lt;/a&gt;&lt;/li&gt;&lt;li&gt;And links to plugins mentioned in the show can be found at &lt;a href=&#34;https://pythontest.com/top-pytest-plugins/&#34;&gt;pythontest.com/top-pytest-plugins&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Transcript&lt;/summary&gt;&#xA;&lt;p&gt;I started using  pytest primarily for the fixture system.  pytest fixtures are kind of like setup and teardown in other test systems, but way more modular and flexible and usable across a test suite, and you can share them with other projects through the plugin system. The  pytest plugin system allows plugins to share fixtures, but also allows them to share hook functions. So what&amp;rsquo;s a hook function?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing some tidbits with pytest</title>
      <link>https://pythontest.com/pytest/testing-tidbits-pytest/</link>
      <pubDate>Mon, 16 Dec 2024 07:00:00 +0800</pubDate>
      <guid>https://pythontest.com/pytest/testing-tidbits-pytest/</guid>
      <description>&lt;p&gt;I noticed a fun post by Ned Batchelder called &lt;a href=&#34;https://nedbatchelder.com/blog/202412/testing_some_tidbits.html&#34;&gt;Testing some tidbits&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The post looks at different ways to see if a string has only 0 or 1 in it.&lt;/p&gt;&#xA;&lt;p&gt;He posted a few ways on Bluesky/Mastodon and got a bunch of replies with more ways. And then wrote a small script to check to see if they worked.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s a fun post, and from it I learned about:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;cleandoc&lt;/code&gt; - a way to strip leading blank space and maintain code block indentation&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;partition&lt;/code&gt; - splitting strings based on a substring&lt;/li&gt;&#xA;&lt;li&gt;Using &lt;code&gt;|&lt;/code&gt; to pass imports to &lt;code&gt;eval()&lt;/code&gt; - I don&amp;rsquo;t use &lt;code&gt;eval&lt;/code&gt; much.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I was a little dissapointed that with a title like &amp;ldquo;Testing some tidbits&amp;rdquo;, Ned didn&amp;rsquo;t use pytest or any other test framework.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 223 - Writing Stuff Down is a Super Power</title>
      <link>https://pythontest.com/testandcode/episodes/223-writing-stuff-down/</link>
      <pubDate>Sat, 16 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/223-writing-stuff-down/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/223.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Taking notes well can help to listen better, remember things, show respect, be more accountable, free up mind space to solve problems.&lt;/p&gt;&lt;p&gt;This episode discusses&lt;/p&gt;&lt;ul&gt;&lt;li&gt;the benefits of writing things down&lt;/li&gt;&lt;li&gt;preparing for a meeting&lt;/li&gt;&lt;li&gt;taking notes in meetings&lt;/li&gt;&lt;li&gt;reviewing notes for action items, todo items, things to follow up on, etc.&lt;/li&gt;&lt;li&gt;taking notes to allow for better focus&lt;/li&gt;&lt;li&gt;writing well structured emails&lt;/li&gt;&lt;li&gt;writing blog posts and books&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Start Here</title>
      <link>https://pythontest.com/start-here/</link>
      <pubDate>Sun, 20 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/start-here/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re looking for a great place to learn pytest, I recommend the course or book below.&lt;/p&gt;&#xA;&lt;p&gt;However, I&amp;rsquo;m biased, as I&amp;rsquo;m the creator of both.&lt;/p&gt;&#xA;&lt;h2 id=&#34;resources&#34;&gt;Resources&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/tags/pytest-book/&#34;&gt;Python Testing with pytest, 2nd Edition&lt;/a&gt; - book - Great for learning pytest offline&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://courses.pythontest.com/&#34;&gt;pytest Courses&lt;/a&gt; - video - Great for learning pytest online&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://courses.pythontest.com/python-test-community/&#34;&gt;PythonTest Community&lt;/a&gt; - Discord community focused on pytest - ask/answer pytest and other testing questions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;topics-ive-talked-about&#34;&gt;Topics I&amp;rsquo;ve talked about&lt;/h2&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re looking for an old post, there&amp;rsquo;s the &lt;a href=&#34;https://pythontest.com/archive/&#34;&gt;archive&lt;/a&gt;, of course.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 222 - Import within a Python package</title>
      <link>https://pythontest.com/testandcode/episodes/222-import-within-a-python-package/</link>
      <pubDate>Sat, 07 Sep 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/222-import-within-a-python-package/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/222.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In this episode we&#39;re talking about importing part of a package into another part of the same package.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;We&#39;ll look at: `from . import module` and `from .module import something`&lt;/p&gt;&lt;p&gt;and also:  `import package` to access the external API from with the package.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Why would we use `import package` if `from . import api` would work fine?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Top pytest Plugins</title>
      <link>https://pythontest.com/top-pytest-plugins/</link>
      <pubDate>Sun, 25 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/top-pytest-plugins/</guid>
      <description>&lt;p&gt;This is intended to find the most popular (as determined by download count) pytest plugins, as plugins usually have &amp;ldquo;pytest&amp;rdquo; in the name.&lt;br&gt;&#xA;Counts are the number of downloads over 30 days.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-list&#34;&gt;The list&lt;/h2&gt;&#xA;&lt;p&gt;Data last updated: 2026-03-01 07:34:08&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;#&lt;/th&gt;&#xA;          &lt;th&gt;Package&lt;/th&gt;&#xA;          &lt;th&gt;Downloads&lt;/th&gt;&#xA;          &lt;th&gt;Summary&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-cov&#34;&gt;pytest-cov&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;125,305,202&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for measuring coverage. &lt;br/&gt;Test and Code episode &lt;a href=&#34;https://pythontest.com/testandcode/episodes/pytest-cov&#34;&gt;pytest-cov : The pytest plugin for measuring coverage&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;2&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-asyncio&#34;&gt;pytest-asyncio&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;117,135,896&lt;/td&gt;&#xA;          &lt;td&gt;pytest support for asyncio&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;3&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-xdist&#34;&gt;pytest-xdist&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;78,297,479&lt;/td&gt;&#xA;          &lt;td&gt;pytest xdist plugin for distributed testing, most importantly across multiple CPUs&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;4&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-mock&#34;&gt;pytest-mock&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;69,170,032&lt;/td&gt;&#xA;          &lt;td&gt;Thin-wrapper around the mock package for easier use with pytest &lt;br/&gt;Test and Code episode &lt;a href=&#34;https://pythontest.com/testandcode/episodes/pytest-mock&#34;&gt;pytest-mock : Mocking in pytest&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;5&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-timeout&#34;&gt;pytest-timeout&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;37,182,213&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to abort hanging tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;6&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-rerunfailures&#34;&gt;pytest-rerunfailures&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;25,663,680&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to re-run tests to eliminate flaky failures&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;7&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-metadata&#34;&gt;pytest-metadata&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;24,408,102&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for test session metadata &lt;br/&gt;Test and Code episode &lt;a href=&#34;https://pythontest.com/testandcode/episodes/pytest-metadata&#34;&gt;pytest-metadata - provides access to test session metadata&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;8&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-json-ctrf&#34;&gt;pytest-json-ctrf&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;22,842,493&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to generate json report in CTRF (Common Test Report Format)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;9&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/hypothesis&#34;&gt;hypothesis&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;20,982,553&lt;/td&gt;&#xA;          &lt;td&gt;The property-based testing library for Python &lt;br/&gt;Includes a small pytest plugin.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;10&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-html&#34;&gt;pytest-html&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;17,563,741&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for generating HTML reports &lt;br/&gt;Test and Code episode &lt;a href=&#34;https://pythontest.com/testandcode/episodes/pytest-html&#34;&gt;pytest-html - a plugin that generates HTML reports for test results&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;11&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-env&#34;&gt;pytest-env&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;15,943,891&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin that allows you to add environment variables.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;12&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-django&#34;&gt;pytest-django&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;11,603,452&lt;/td&gt;&#xA;          &lt;td&gt;A Django plugin for pytest. &lt;br/&gt;Test and Code episode &lt;a href=&#34;https://pythontest.com/testandcode/episodes/pytest-django/&#34;&gt;pytest-django with Adam Johnson&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;13&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-split&#34;&gt;pytest-split&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;10,533,490&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin which splits the test suite to equally sized sub suites based on test execution time.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;14&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-repeat&#34;&gt;pytest-repeat&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;8,350,041&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for repeating tests &lt;br/&gt;Test and Code episode &lt;a href=&#34;https://pythontest.com/testandcode/episodes/pytest-repeat-works-fine-on-python-3-14&#34;&gt;pytest-repeat - works fine on Python 3.14&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;15&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-benchmark&#34;&gt;pytest-benchmark&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;8,315,492&lt;/td&gt;&#xA;          &lt;td&gt;A &lt;code&gt;pytest&lt;/code&gt; fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;16&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-socket&#34;&gt;pytest-socket&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;7,601,339&lt;/td&gt;&#xA;          &lt;td&gt;pytest Plugin to disable socket calls during tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;17&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-json-report&#34;&gt;pytest-json-report&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;7,564,182&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin to report test results as JSON files &lt;br/&gt;Seems no longer supported, but leaving here to recommend &lt;a href=&#34;https://pypi.org/project/pytest-json-report-wip/&#34;&gt;pytest-json-report-wip&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;18&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-unordered&#34;&gt;pytest-unordered&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;6,973,050&lt;/td&gt;&#xA;          &lt;td&gt;Test equality of unordered collections in pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;19&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/syrupy&#34;&gt;syrupy&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;6,620,009&lt;/td&gt;&#xA;          &lt;td&gt;pytest Snapshot Test Utility&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;20&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-custom-exit-code&#34;&gt;pytest-custom-exit-code&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;6,158,551&lt;/td&gt;&#xA;          &lt;td&gt;Exit pytest test session with custom exit code in different scenarios&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;21&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-icdiff&#34;&gt;pytest-icdiff&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;5,928,051&lt;/td&gt;&#xA;          &lt;td&gt;use icdiff for better error messages in pytest assertions&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;22&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-instafail&#34;&gt;pytest-instafail&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;5,873,996&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to show failures instantly&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;23&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-base-url&#34;&gt;pytest-base-url&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;5,641,589&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for URL based testing&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;24&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/allure-pytest&#34;&gt;allure-pytest&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;5,322,892&lt;/td&gt;&#xA;          &lt;td&gt;Allure pytest integration&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;25&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-playwright&#34;&gt;pytest-playwright&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;5,170,972&lt;/td&gt;&#xA;          &lt;td&gt;A pytest wrapper with fixtures for Playwright to automate web browsers&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;26&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-sugar&#34;&gt;pytest-sugar&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;5,112,898&lt;/td&gt;&#xA;          &lt;td&gt;pytest-sugar is a plugin for pytest that changes the default look and feel of pytest (e.g. progressbar, show tests that fail instantly).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;27&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-httpx&#34;&gt;pytest-httpx&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;5,064,018&lt;/td&gt;&#xA;          &lt;td&gt;Send responses to httpx.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;28&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-ordering&#34;&gt;pytest-ordering&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;5,037,417&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to run your tests in a specific order&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;29&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-randomly&#34;&gt;pytest-randomly&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;4,780,644&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to randomly order tests and control random.seed.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;30&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-order&#34;&gt;pytest-order&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;4,041,347&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to run your tests in a specific order&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;31&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-postgresql&#34;&gt;pytest-postgresql&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;3,991,269&lt;/td&gt;&#xA;          &lt;td&gt;Postgresql fixtures and fixture factories for pytest.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;32&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-subtests&#34;&gt;pytest-subtests&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;3,690,646&lt;/td&gt;&#xA;          &lt;td&gt;unittest subTest() support and subtests fixture &lt;br/&gt;Test and Code episode &lt;a href=&#34;https://pythontest.com/testandcode/episodes/111-subtests-in-python-with-unittest-and-pytest-paul-ganssle&#34;&gt;Subtests in Python with unittest and pytest&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;33&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-dotenv&#34;&gt;pytest-dotenv&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;3,685,182&lt;/td&gt;&#xA;          &lt;td&gt;A py.test plugin that parses environment files before running tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;34&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-httpserver&#34;&gt;pytest-httpserver&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;3,145,931&lt;/td&gt;&#xA;          &lt;td&gt;pytest-httpserver is a httpserver for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;35&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-recording&#34;&gt;pytest-recording&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;3,087,825&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin powered by VCR.py to record and replay HTTP traffic&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;36&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-retry&#34;&gt;pytest-retry&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;3,020,640&lt;/td&gt;&#xA;          &lt;td&gt;Adds the ability to retry flaky tests in CI environments&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;37&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-aiohttp&#34;&gt;pytest-aiohttp&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;3,018,940&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for aiohttp support&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;38&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-check&#34;&gt;pytest-check&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2,954,706&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin that allows multiple failures per test. &lt;br/&gt;Test and Code episode &lt;a href=&#34;https://pythontest.com/testandcode/episodes/pytest-check&#34;&gt;pytest-check - allow multiple failures per test&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;39&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-homeassistant-custom-component&#34;&gt;pytest-homeassistant-custom-component&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2,801,887&lt;/td&gt;&#xA;          &lt;td&gt;Experimental package to automatically extract test plugins for Home Assistant custom components&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;40&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-assume&#34;&gt;pytest-assume&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2,447,318&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin that allows multiple failures per test&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;41&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-dependency&#34;&gt;pytest-dependency&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2,329,886&lt;/td&gt;&#xA;          &lt;td&gt;Manage dependencies of tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;42&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-random-order&#34;&gt;pytest-random-order&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2,284,243&lt;/td&gt;&#xA;          &lt;td&gt;Randomise the order in which pytest tests are run with some control over the randomness&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;43&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-test-groups&#34;&gt;pytest-test-groups&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2,083,376&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin for running a subset of your tests by splitting them in to equally sized groups.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;44&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-bdd&#34;&gt;pytest-bdd&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2,050,511&lt;/td&gt;&#xA;          &lt;td&gt;BDD for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;45&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-vcr&#34;&gt;pytest-vcr&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2,025,627&lt;/td&gt;&#xA;          &lt;td&gt;Plugin for managing VCR.py cassettes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;46&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-github-actions-annotate-failures&#34;&gt;pytest-github-actions-annotate-failures&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2,007,505&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to annotate failed tests with a workflow command for GitHub Actions&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;47&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-freezegun&#34;&gt;pytest-freezegun&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,866,755&lt;/td&gt;&#xA;          &lt;td&gt;Wrap tests with fixtures in freeze_time&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;48&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-profiling&#34;&gt;pytest-profiling&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,845,617&lt;/td&gt;&#xA;          &lt;td&gt;Profiling plugin for py.test&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;49&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-timeouts&#34;&gt;pytest-timeouts&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,828,904&lt;/td&gt;&#xA;          &lt;td&gt;Linux-only pytest plugin to control durations of various test case execution phases&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;50&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-codspeed&#34;&gt;pytest-codspeed&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,798,294&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to create CodSpeed benchmarks&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;51&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-snapshot&#34;&gt;pytest-snapshot&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,755,451&lt;/td&gt;&#xA;          &lt;td&gt;A plugin for snapshot testing with pytest.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;52&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-celery&#34;&gt;pytest-celery&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,750,171&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for Celery&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;53&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-factoryboy&#34;&gt;pytest-factoryboy&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,625,085&lt;/td&gt;&#xA;          &lt;td&gt;Factory Boy support for pytest.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;54&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-docker-tools&#34;&gt;pytest-docker-tools&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,610,018&lt;/td&gt;&#xA;          &lt;td&gt;Docker integration tests for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;55&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-watcher&#34;&gt;pytest-watcher&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,540,853&lt;/td&gt;&#xA;          &lt;td&gt;Automatically rerun your tests on file modifications&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;56&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-testmon&#34;&gt;pytest-testmon&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,526,670&lt;/td&gt;&#xA;          &lt;td&gt;selects tests affected by changed files and methods&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;57&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-memray&#34;&gt;pytest-memray&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,425,108&lt;/td&gt;&#xA;          &lt;td&gt;A simple plugin to use with pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;58&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-lazy-fixture&#34;&gt;pytest-lazy-fixture&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,280,740&lt;/td&gt;&#xA;          &lt;td&gt;It helps to use fixtures in pytest.mark.parametrize&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;59&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-flask&#34;&gt;pytest-flask&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,262,488&lt;/td&gt;&#xA;          &lt;td&gt;A set of py.test fixtures to test Flask applications.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;60&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-durations&#34;&gt;pytest-durations&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,213,197&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin reporting fixtures and test functions execution time.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;61&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-docker&#34;&gt;pytest-docker&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,181,569&lt;/td&gt;&#xA;          &lt;td&gt;Simple pytest fixtures for Docker and Docker Compose based tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;62&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-datadir&#34;&gt;pytest-datadir&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,057,704&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for test data directories and files&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;63&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-flakefinder&#34;&gt;pytest-flakefinder&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1,010,174&lt;/td&gt;&#xA;          &lt;td&gt;Runs tests multiple times to expose flakiness.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-find-dependencies&#34;&gt;pytest-find-dependencies&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;922,621&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin to find dependencies between tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;65&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-race&#34;&gt;pytest-race&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;889,881&lt;/td&gt;&#xA;          &lt;td&gt;Race conditions tester for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;66&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-pretty&#34;&gt;pytest-pretty&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;865,708&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for printing summary data as I want it&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;67&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-watch&#34;&gt;pytest-watch&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;855,265&lt;/td&gt;&#xA;          &lt;td&gt;Local continuous test runner with pytest and watchdog.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;68&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-alembic&#34;&gt;pytest-alembic&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;841,571&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin for verifying alembic migrations.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;69&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-freezer&#34;&gt;pytest-freezer&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;778,522&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin providing a fixture interface for spulec/freezegun&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;70&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-testinfra&#34;&gt;pytest-testinfra&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;767,645&lt;/td&gt;&#xA;          &lt;td&gt;Test infrastructures&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;71&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-azurepipelines&#34;&gt;pytest-azurepipelines&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;751,875&lt;/td&gt;&#xA;          &lt;td&gt;Formatting PyTest output for Azure Pipelines UI&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;72&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-lazy-fixtures&#34;&gt;pytest-lazy-fixtures&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;714,581&lt;/td&gt;&#xA;          &lt;td&gt;Allows you to use fixtures in @pytest.mark.parametrize.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;73&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-opentelemetry&#34;&gt;pytest-opentelemetry&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;706,850&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin for instrumenting test runs via OpenTelemetry&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;74&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-sftpserver&#34;&gt;pytest-sftpserver&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;704,874&lt;/td&gt;&#xA;          &lt;td&gt;py.test plugin to locally test sftp server connections.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;75&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-ansible&#34;&gt;pytest-ansible&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;664,956&lt;/td&gt;&#xA;          &lt;td&gt;Plugin for pytest to simplify calling ansible modules from tests or fixtures&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;76&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-cases&#34;&gt;pytest-cases&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;655,209&lt;/td&gt;&#xA;          &lt;td&gt;Separate test code from test cases in pytest.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;77&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-deadfixtures&#34;&gt;pytest-deadfixtures&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;605,247&lt;/td&gt;&#xA;          &lt;td&gt;A simple plugin to list unused fixtures in pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;78&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-examples&#34;&gt;pytest-examples&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;599,593&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for testing examples in docstrings and markdown files.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;79&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-reportportal&#34;&gt;pytest-reportportal&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;592,977&lt;/td&gt;&#xA;          &lt;td&gt;Agent for Reporting results of tests to the Report Portal&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;80&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-reportlog&#34;&gt;pytest-reportlog&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;568,744&lt;/td&gt;&#xA;          &lt;td&gt;Replacement for the &amp;ndash;resultlog option, focused in simplicity and extensibility&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;81&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-nunit&#34;&gt;pytest-nunit&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;554,243&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin for generating NUnit3 test result XML output&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;82&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-doctestplus&#34;&gt;pytest-doctestplus&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;549,919&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin with advanced doctest features.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;83&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-qt&#34;&gt;pytest-qt&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;545,262&lt;/td&gt;&#xA;          &lt;td&gt;pytest support for PyQt and PySide applications&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;84&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-subprocess&#34;&gt;pytest-subprocess&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;528,726&lt;/td&gt;&#xA;          &lt;td&gt;A plugin to fake subprocess for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;85&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-plus&#34;&gt;pytest-plus&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;499,847&lt;/td&gt;&#xA;          &lt;td&gt;PyTest Plus Plugin :: extends pytest functionality&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;86&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-regressions&#34;&gt;pytest-regressions&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;486,887&lt;/td&gt;&#xA;          &lt;td&gt;Easy to use fixtures to write regression tests.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;87&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-mypy&#34;&gt;pytest-mypy&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;461,022&lt;/td&gt;&#xA;          &lt;td&gt;A pytest Plugin for Mypy&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;88&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-pylint&#34;&gt;pytest-pylint&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;454,995&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to check source code with pylint&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;89&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-clarity&#34;&gt;pytest-clarity&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;454,653&lt;/td&gt;&#xA;          &lt;td&gt;A plugin providing an alternative, colourful diff output for failing assertions.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;90&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-trio&#34;&gt;pytest-trio&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;450,877&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for trio&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;91&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-mpl&#34;&gt;pytest-mpl&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;442,485&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to help with testing figures output from Matplotlib&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;92&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-flake8&#34;&gt;pytest-flake8&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;426,761&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to check FLAKE8 requirements&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;93&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-describe&#34;&gt;pytest-describe&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;414,568&lt;/td&gt;&#xA;          &lt;td&gt;Describe-style plugin for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;94&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-picked&#34;&gt;pytest-picked&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;406,468&lt;/td&gt;&#xA;          &lt;td&gt;Run the tests related to the changed files&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;95&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-variables&#34;&gt;pytest-variables&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;405,198&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for providing variables to tests/fixtures&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;96&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-cache&#34;&gt;pytest-cache&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;398,439&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin with mechanisms for caching across test runs&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;97&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-shutil&#34;&gt;pytest-shutil&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;394,822&lt;/td&gt;&#xA;          &lt;td&gt;A goodie-bag of unix shell and environment tools for py.test&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;98&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-mock-resources&#34;&gt;pytest-mock-resources&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;373,956&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin for easily instantiating reproducible mock resources.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;99&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-remotedata&#34;&gt;pytest-remotedata&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;360,116&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for controlling remote data access.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;100&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-selenium&#34;&gt;pytest-selenium&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;356,422&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for Selenium&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;101&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-markdown-docs&#34;&gt;pytest-markdown-docs&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;353,872&lt;/td&gt;&#xA;          &lt;td&gt;Run markdown code fences through pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;102&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-localserver&#34;&gt;pytest-localserver&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;350,646&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to test server connections locally.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;103&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-spark&#34;&gt;pytest-spark&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;344,991&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to run the tests with support of pyspark.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;104&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pylint-pytest&#34;&gt;pylint-pytest&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;341,480&lt;/td&gt;&#xA;          &lt;td&gt;A Pylint plugin to suppress pytest-related false positives.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;105&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-csv&#34;&gt;pytest-csv&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;339,376&lt;/td&gt;&#xA;          &lt;td&gt;CSV output for pytest.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;106&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-md-report&#34;&gt;pytest-md-report&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;339,223&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin to generate test outcomes reports with markdown table format. &lt;br/&gt;Test and Code episode &lt;a href=&#34;https://pythontest.com/testandcode/episodes/markdown-reports-pytest-md-pytest-md-report&#34;&gt;pytest-md and pytest-md-report: Markdown reports for pytest&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;107&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-filter-subpackage&#34;&gt;pytest-filter-subpackage&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;329,238&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for filtering based on sub-packages&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;108&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-mysql&#34;&gt;pytest-mysql&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;324,493&lt;/td&gt;&#xA;          &lt;td&gt;MySQL process and client fixtures for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;109&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-tornasync&#34;&gt;pytest-tornasync&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;289,774&lt;/td&gt;&#xA;          &lt;td&gt;py.test plugin for testing Python 3.5+ Tornado code&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;110&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-structlog&#34;&gt;pytest-structlog&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;284,104&lt;/td&gt;&#xA;          &lt;td&gt;Structured logging assertions&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;111&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-cpp&#34;&gt;pytest-cpp&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;273,839&lt;/td&gt;&#xA;          &lt;td&gt;Use pytest&amp;rsquo;s runner to discover and execute C++ tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;112&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-arraydiff&#34;&gt;pytest-arraydiff&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;266,617&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to help with comparing array output from tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;113&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-timestamper&#34;&gt;pytest-timestamper&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;264,137&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to add a timestamp prefix to the pytest output&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;114&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-astropy&#34;&gt;pytest-astropy&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;264,127&lt;/td&gt;&#xA;          &lt;td&gt;Meta-package containing dependencies for testing&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;115&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-astropy-header&#34;&gt;pytest-astropy-header&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;258,250&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to add diagnostic information to the header of the test output&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;116&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-loguru&#34;&gt;pytest-loguru&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;237,305&lt;/td&gt;&#xA;          &lt;td&gt;pytest Loguru&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;117&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-reraise&#34;&gt;pytest-reraise&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;236,118&lt;/td&gt;&#xA;          &lt;td&gt;Make multi-threaded pytest test cases fail when they should&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;118&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-console-scripts&#34;&gt;pytest-console-scripts&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;227,545&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for testing console scripts&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;119&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-md&#34;&gt;pytest-md&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;226,323&lt;/td&gt;&#xA;          &lt;td&gt;Plugin for generating Markdown reports for pytest results &lt;br/&gt;Test and Code episode &lt;a href=&#34;https://pythontest.com/testandcode/episodes/markdown-reports-pytest-md-pytest-md-report&#34;&gt;pytest-md and pytest-md-report: Markdown reports for pytest&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;120&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-mypy-plugins&#34;&gt;pytest-mypy-plugins&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;218,659&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for writing tests for mypy plugins&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;121&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-harvest&#34;&gt;pytest-harvest&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;215,603&lt;/td&gt;&#xA;          &lt;td&gt;Store data created during your pytest tests execution, and retrieve it at the end of the session, e.g. for applicative benchmarking purposes.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;122&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-regex&#34;&gt;pytest-regex&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;211,716&lt;/td&gt;&#xA;          &lt;td&gt;Select pytest tests with regular expressions&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;123&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-tornado&#34;&gt;pytest-tornado&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;210,813&lt;/td&gt;&#xA;          &lt;td&gt;A py.test plugin providing fixtures and markers to simplify testing of asynchronous tornado applications.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;124&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-skip-slow&#34;&gt;pytest-skip-slow&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;203,868&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin to skip &lt;code&gt;@pytest.mark.slow&lt;/code&gt; tests by default.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;125&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-twisted&#34;&gt;pytest-twisted&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;203,665&lt;/td&gt;&#xA;          &lt;td&gt;A twisted plugin for pytest.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;126&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-xvfb&#34;&gt;pytest-xvfb&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;201,497&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin to run Xvfb (or Xephyr/Xvnc) for tests.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;127&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-json&#34;&gt;pytest-json&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;200,010&lt;/td&gt;&#xA;          &lt;td&gt;Generate JSON test reports&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;128&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-incremental&#34;&gt;pytest-incremental&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;199,516&lt;/td&gt;&#xA;          &lt;td&gt;an incremental test runner (pytest plugin)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;129&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-tagging&#34;&gt;pytest-tagging&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;199,431&lt;/td&gt;&#xA;          &lt;td&gt;a pytest plugin to tag tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;130&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-redis&#34;&gt;pytest-redis&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;198,294&lt;/td&gt;&#xA;          &lt;td&gt;Redis fixtures and fixture factories for pytest.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;131&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-helpers-namespace&#34;&gt;pytest-helpers-namespace&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;195,058&lt;/td&gt;&#xA;          &lt;td&gt;pytest Helpers Namespace Plugin&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;132&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-logger&#34;&gt;pytest-logger&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;194,894&lt;/td&gt;&#xA;          &lt;td&gt;Plugin configuring handlers for loggers from Python logging module.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;133&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-anyio&#34;&gt;pytest-anyio&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;189,462&lt;/td&gt;&#xA;          &lt;td&gt;The pytest anyio plugin is built into anyio. You don&amp;rsquo;t need this package.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;134&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-integration&#34;&gt;pytest-integration&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;188,595&lt;/td&gt;&#xA;          &lt;td&gt;Organizing pytests by integration or not&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;135&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-pep8&#34;&gt;pytest-pep8&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;185,146&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to check PEP8 requirements&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;136&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-reporter&#34;&gt;pytest-reporter&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;176,495&lt;/td&gt;&#xA;          &lt;td&gt;Generate pytest reports with templates&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;137&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-fixture-config&#34;&gt;pytest-fixture-config&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;176,410&lt;/td&gt;&#xA;          &lt;td&gt;Fixture configuration utils for py.test&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;138&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-xprocess&#34;&gt;pytest-xprocess&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;169,681&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin for managing processes across test runs.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;139&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/flake8-pytest-style&#34;&gt;flake8-pytest-style&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;168,525&lt;/td&gt;&#xA;          &lt;td&gt;A flake8 plugin checking common style issues or inconsistencies with pytest-based tests.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;140&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-slack&#34;&gt;pytest-slack&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;167,471&lt;/td&gt;&#xA;          &lt;td&gt;pytest to Slack reporting plugin&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;141&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-reporter-html1&#34;&gt;pytest-reporter-html1&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;163,271&lt;/td&gt;&#xA;          &lt;td&gt;A basic HTML report template for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;142&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-embedded-serial&#34;&gt;pytest-embedded-serial&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;162,110&lt;/td&gt;&#xA;          &lt;td&gt;Make pytest-embedded plugin work with Serial.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;143&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-runtime-xfail&#34;&gt;pytest-runtime-xfail&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;161,911&lt;/td&gt;&#xA;          &lt;td&gt;Call runtime_xfail() to mark running test as xfail.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;144&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-excel&#34;&gt;pytest-excel&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;160,721&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for generating excel reports&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;145&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-parametrization&#34;&gt;pytest-parametrization&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;157,914&lt;/td&gt;&#xA;          &lt;td&gt;Simpler PyTest parametrization&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;146&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-grpc&#34;&gt;pytest-grpc&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;156,456&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for grpc&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;147&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-embedded-serial-esp&#34;&gt;pytest-embedded-serial-esp&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;154,346&lt;/td&gt;&#xA;          &lt;td&gt;Make pytest-embedded plugin work with Espressif target boards.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;148&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-pytestrail&#34;&gt;pytest-pytestrail&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;148,044&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for interaction with TestRail&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;149&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-bazel&#34;&gt;pytest-bazel&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;147,120&lt;/td&gt;&#xA;          &lt;td&gt;A pytest runner with bazel support&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;150&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-operator&#34;&gt;pytest-operator&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;142,474&lt;/td&gt;&#xA;          &lt;td&gt;Fixtures for Charmed Operators&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;151&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-black&#34;&gt;pytest-black&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;136,294&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin to enable format checking with black&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;152&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-jira-xray&#34;&gt;pytest-jira-xray&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;136,187&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to integrate tests with JIRA XRAY&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;153&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-webdriver&#34;&gt;pytest-webdriver&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;134,864&lt;/td&gt;&#xA;          &lt;td&gt;Selenium webdriver fixture for py.test&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;154&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-ruff&#34;&gt;pytest-ruff&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;133,945&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to check ruff requirements.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;155&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-depends&#34;&gt;pytest-depends&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;132,473&lt;/td&gt;&#xA;          &lt;td&gt;Tests that depend on other tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;156&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-responses&#34;&gt;pytest-responses&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;131,855&lt;/td&gt;&#xA;          &lt;td&gt;py.test integration for responses&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;157&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-emoji&#34;&gt;pytest-emoji&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;131,812&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin that adds emojis to your test result report&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;158&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-rng&#34;&gt;pytest-rng&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;130,494&lt;/td&gt;&#xA;          &lt;td&gt;Fixtures for seeding tests and making randomness reproducible&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;159&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-insta&#34;&gt;pytest-insta&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;129,164&lt;/td&gt;&#xA;          &lt;td&gt;A practical snapshot testing plugin for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;160&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-html-merger&#34;&gt;pytest-html-merger&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;129,161&lt;/td&gt;&#xA;          &lt;td&gt;pytest HTML reports merging utility&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;161&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-deepassert&#34;&gt;pytest-deepassert&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;122,908&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin for enhanced assertion reporting with detailed diffs&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;162&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-tap&#34;&gt;pytest-tap&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;122,849&lt;/td&gt;&#xA;          &lt;td&gt;Test Anything Protocol (TAP) reporting plugin for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;163&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-print&#34;&gt;pytest-print&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;117,278&lt;/td&gt;&#xA;          &lt;td&gt;pytest-print adds the printer fixture you can use to print messages to the user (directly to the pytest runner, not stdout)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;164&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-datafiles&#34;&gt;pytest-datafiles&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;116,280&lt;/td&gt;&#xA;          &lt;td&gt;py.test plugin to create a &amp;rsquo;tmp_path&amp;rsquo; containing predefined files/directories.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;165&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-cmake&#34;&gt;pytest-cmake&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;114,360&lt;/td&gt;&#xA;          &lt;td&gt;Provide CMake module for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;166&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-ignore-test-results&#34;&gt;pytest-ignore-test-results&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;114,326&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin to ignore test results.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;167&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/allure-pytest-bdd&#34;&gt;allure-pytest-bdd&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;114,176&lt;/td&gt;&#xA;          &lt;td&gt;Allure pytest-bdd integration&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;168&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytestarch&#34;&gt;pytestarch&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;112,858&lt;/td&gt;&#xA;          &lt;td&gt;Test framework for software architecture based on imports between modules&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;169&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-otel&#34;&gt;pytest-otel&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;112,140&lt;/td&gt;&#xA;          &lt;td&gt;OpenTelemetry plugin for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;170&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-embedded-jtag&#34;&gt;pytest-embedded-jtag&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;111,272&lt;/td&gt;&#xA;          &lt;td&gt;Make pytest-embedded plugin work with JTAG.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;171&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-golden&#34;&gt;pytest-golden&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;111,044&lt;/td&gt;&#xA;          &lt;td&gt;Plugin for pytest that offloads expected outputs to data files&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;172&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-schema&#34;&gt;pytest-schema&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;110,715&lt;/td&gt;&#xA;          &lt;td&gt;👍 Validate return values against a schema-like object in testing&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;173&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-monitor&#34;&gt;pytest-monitor&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;107,410&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for analyzing resource usage.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;174&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-archon&#34;&gt;pytest-archon&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;106,427&lt;/td&gt;&#xA;          &lt;td&gt;Rule your architecture like a real developer&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;175&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/qase-pytest&#34;&gt;qase-pytest&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;106,325&lt;/td&gt;&#xA;          &lt;td&gt;Qase pytest Plugin for Qase TestOps and Qase Report&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;176&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-isort&#34;&gt;pytest-isort&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;103,669&lt;/td&gt;&#xA;          &lt;td&gt;py.test plugin to check import ordering using isort&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;177&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/allure-pytest-default-results&#34;&gt;allure-pytest-default-results&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;101,666&lt;/td&gt;&#xA;          &lt;td&gt;Generate default &amp;ldquo;unknown&amp;rdquo; results to show in Allure Report if test case does not run&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;178&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-spec&#34;&gt;pytest-spec&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;98,434&lt;/td&gt;&#xA;          &lt;td&gt;Library pytest-spec is a pytest plugin to display test execution output like a SPECIFICATION.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;179&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-fail-slow&#34;&gt;pytest-fail-slow&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;98,329&lt;/td&gt;&#xA;          &lt;td&gt;Fail tests that take too long to run&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;180&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-testrail&#34;&gt;pytest-testrail&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;97,120&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin for creating TestRail runs and adding results&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;181&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-explicit&#34;&gt;pytest-explicit&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;96,089&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin to ignore certain marked tests by default&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;182&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/types-pytest-lazy-fixture&#34;&gt;types-pytest-lazy-fixture&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;95,069&lt;/td&gt;&#xA;          &lt;td&gt;Typing stubs for pytest-lazy-fixture&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;183&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-container&#34;&gt;pytest-container&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;90,652&lt;/td&gt;&#xA;          &lt;td&gt;pytest fixtures for writing container based tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;184&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-xdist-worker-stats&#34;&gt;pytest-xdist-worker-stats&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;90,455&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin to list worker statistics after a xdist run.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;185&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-mpi&#34;&gt;pytest-mpi&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;90,258&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to collect information from tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;186&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-func-cov&#34;&gt;pytest-func-cov&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;90,148&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for measuring function coverage&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;187&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-loop&#34;&gt;pytest-loop&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;89,453&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for looping tests&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;188&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-fastapi-deps&#34;&gt;pytest-fastapi-deps&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;87,554&lt;/td&gt;&#xA;          &lt;td&gt;A fixture which allows easy replacement of fastapi dependencies for testing&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;189&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-logging&#34;&gt;pytest-logging&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;85,451&lt;/td&gt;&#xA;          &lt;td&gt;Configures logging and allows tweaking the log level with a py.test flag&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;190&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-rich&#34;&gt;pytest-rich&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;85,374&lt;/td&gt;&#xA;          &lt;td&gt;Leverage rich for richer test session output&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;191&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-threadleak&#34;&gt;pytest-threadleak&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;85,032&lt;/td&gt;&#xA;          &lt;td&gt;Detects thread leaks&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;192&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-stub&#34;&gt;pytest-stub&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;83,459&lt;/td&gt;&#xA;          &lt;td&gt;Stub packages, modules and attributes.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;193&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-integration-mark&#34;&gt;pytest-integration-mark&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;82,276&lt;/td&gt;&#xA;          &lt;td&gt;Automatic integration test marking and excluding plugin for pytest&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;194&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-pudb&#34;&gt;pytest-pudb&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;81,947&lt;/td&gt;&#xA;          &lt;td&gt;pytest PuDB debugger integration&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;195&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-aio&#34;&gt;pytest-aio&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;81,141&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin for testing async python code&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;196&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-reverse&#34;&gt;pytest-reverse&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;79,126&lt;/td&gt;&#xA;          &lt;td&gt;pytest plugin to reverse test order.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;197&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-embedded&#34;&gt;pytest-embedded&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;78,975&lt;/td&gt;&#xA;          &lt;td&gt;A pytest plugin that designed for embedded testing.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;198&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-pikachu&#34;&gt;pytest-pikachu&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;78,374&lt;/td&gt;&#xA;          &lt;td&gt;Show surprise when tests are passing&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;199&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-codeblocks&#34;&gt;pytest-codeblocks&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;77,437&lt;/td&gt;&#xA;          &lt;td&gt;Test code blocks in your READMEs&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;200&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://pypi.org/project/pytest-async&#34;&gt;pytest-async&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;76,598&lt;/td&gt;&#xA;          &lt;td&gt;pytest-async - Run your coroutine in event loop without decorator&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Current process is based on hugovk&amp;rsquo;s &lt;a href=&#34;https://hugovk.github.io/top-pypi-packages/&#34;&gt;Top PyPI Packages&lt;/a&gt;.&#xA;Package data is filtered for &amp;ldquo;pytest&amp;rdquo;.&lt;br&gt;&#xA;There&amp;rsquo;s also a filter for deprecated and unmaintained plugins.&lt;br&gt;&#xA;See &lt;a href=&#34;https://github.com/okken/top-pytest-plugins/blob/main/top_pytest.py&#34;&gt;source code&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Finding the top pytest plugins</title>
      <link>https://pythontest.com/pytest/finding-top-pytest-plugins/</link>
      <pubDate>Sun, 25 Aug 2024 05:00:00 +0800</pubDate>
      <guid>https://pythontest.com/pytest/finding-top-pytest-plugins/</guid>
      <description>&lt;p&gt;What are the top downloaded pytest plugins?&lt;br&gt;&#xA;I want to know this. And I&amp;rsquo;d like the answer updated regularly.&lt;br&gt;&#xA;So today I decided to write a script to do that for me.&lt;/p&gt;&#xA;&lt;h2 id=&#34;grab-data&#34;&gt;Grab data&lt;/h2&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s start with &lt;a href=&#34;https://hugovk.github.io/top-pypi-packages/&#34;&gt;Top PyPI Packages&lt;/a&gt; from &lt;a href=&#34;https://github.com/hugovk/&#34;&gt;Hugo van Kemenade&lt;/a&gt;. This list is &amp;ldquo;A monthly dump of the 8,000 most-downloaded packages from PyPI.&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;Perfect.&lt;/p&gt;&#xA;&lt;h2 id=&#34;parse&#34;&gt;Parse&lt;/h2&gt;&#xA;&lt;p&gt;Now:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Filter for &amp;ldquo;pytest&amp;rdquo; in the package name&lt;/li&gt;&#xA;&lt;li&gt;Remove &amp;ldquo;pytest&amp;rdquo; itself.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I could leave this in for comparison, but it would always be #1.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Renumber.&lt;/li&gt;&#xA;&lt;li&gt;Include a link to the pypi.org package page.&lt;/li&gt;&#xA;&lt;li&gt;Throw it all in a table.&lt;/li&gt;&#xA;&lt;li&gt;Pipe it to a markdown blog page.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;added-on-26-aug&#34;&gt;Added on 26-Aug:&lt;/h3&gt;&#xA;&lt;p&gt;Grab summaries from pypi.org via Warehouse API.&lt;br&gt;&#xA;Thanks Jeff Triplett and Hugo for pointing me in that direction.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 221 - How to get pytest to import your code under test</title>
      <link>https://pythontest.com/testandcode/episodes/221-how-to-get-pytest-to-import-your-code-under-test/</link>
      <pubDate>Mon, 03 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/221-how-to-get-pytest-to-import-your-code-under-test/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/221.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;We&#39;ve got some code we want to test, and some tests.&lt;br&gt;The tests need to be able to import the code under test, or at least the API to it, in order to run tests against it.&lt;br&gt;How do we do that? How do we set things up so that our tests can import our code?&lt;/p&gt;&lt;p&gt;In this episode, we discuss two options:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 14 - Shauna Gordon-McKeon - Open Source Governance, Women&#39;s Soccer, and Django</title>
      <link>https://pythontest.com/pythonpeople/episodes/shauna-gordon-mckeon/</link>
      <pubDate>Thu, 09 May 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/shauna-gordon-mckeon/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/14.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;This is a really fun talk with Shauna.  &lt;/p&gt;&lt;p&gt;We talk about: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Going from academia to tech&lt;/li&gt;&lt;li&gt;Django&lt;/li&gt;&lt;li&gt;Open source project governance and &lt;a href=&#34;https://governingopen.com&#34;&gt;Governing Open&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.nwslsoccer.com/&#34;&gt;Womens Soccer&lt;/a&gt; and the NWSL&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Shauna&#39;s technical consulting business is &lt;a href=&#34;http://www.galaxyriseconsulting.com/&#34;&gt;Galaxy Rise Consulting&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&lt;li&gt;Show notes and resources can be found at &lt;a href=&#34;https://pythontest.com/pythonpeople&#34;&gt;pythontest.com/pythonpeople&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Shauna Gordon-McKeon&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 13 - Rob Ludwick - Getting the most out of PyCon, including juggling</title>
      <link>https://pythontest.com/pythonpeople/episodes/rob-ludwick-getting-the-most-out-of-pycon-including-juggling/</link>
      <pubDate>Sat, 04 May 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/rob-ludwick-getting-the-most-out-of-pycon-including-juggling/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/13.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;PyCon US is just around the corner.  I&#39;ve asked Rob Ludwick to come on the show to discuss how to get the most out of your PyCon experience. There&#39;s a lot to do. A lot of activities to juggle, including actual juggling, which is where we start the conversation.&lt;/p&gt;&lt;p&gt;Even if you never get a chance to go to PyCon, I hope this interview helps you get a feel for the welcoming aspect of the Python community.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 220 - Getting the most out of PyCon, including juggling - Rob Ludwick</title>
      <link>https://pythontest.com/testandcode/episodes/220-juggling-pycon/</link>
      <pubDate>Sat, 04 May 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/220-juggling-pycon/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/220.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;PyCon US is just around the corner.  I&#39;ve asked Rob Ludwick to come on the show to discuss how to get the most out of your PyCon experience. There&#39;s a lot to do. A lot of activities to juggle, including actual juggling, which is where we start the conversation.&lt;/p&gt;&lt;p&gt;Even if you never get a chance to go to PyCon, I hope this interview helps you get a feel for the welcoming aspect of the Python community.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 219 - Building Django Apps and SaaS Pegasus - Cory Zue</title>
      <link>https://pythontest.com/testandcode/episodes/building-django-apps-saas-pegasus/</link>
      <pubDate>Tue, 23 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/building-django-apps-saas-pegasus/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/219.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I&#39;m starting a SaaS project using Django, and there are tons of decisions right out of the gate. &lt;br&gt;To help me navigate these decisions, I&#39;ve brought on Cory Zue.   &lt;br&gt;Cory is the creator of &lt;a href=&#34;https://www.saaspegasus.com/?via=brian&#34;&gt;SaaS Pegasus&lt;/a&gt;, and has tons of experience with Django.&lt;/p&gt;&lt;p&gt;Some of the topics discussed:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Building Django applications&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.saaspegasus.com/?via=brian&#34;&gt;SaaS Pegasus&lt;/a&gt;&lt;/li&gt;&lt;li&gt;placecard.me&lt;/li&gt;&lt;li&gt;What boilerplate projects are&lt;/li&gt;&lt;li&gt;Django cookiecutter&lt;/li&gt;&lt;li&gt;Cookiecutter&lt;/li&gt;&lt;li&gt;Which database to use, probably PostgreSQL&lt;/li&gt;&lt;li&gt;Authentication choises, probably Allauth&lt;/li&gt;&lt;li&gt;Docker, Docker for development, Docker for deployment&lt;/li&gt;&lt;li&gt;Deployment targets / hosting services. Render, Heroku, Fly.io, for PaaS options.&lt;/li&gt;&lt;li&gt;Front end frameworks. Bootstrap, Tailwind, DaisyUI, TailwindUI&lt;/li&gt;&lt;li&gt;HTMX vs React vs straight Django templates&lt;/li&gt;&lt;li&gt;Rockets&lt;/li&gt;&lt;li&gt;Font Awesome&lt;/li&gt;&lt;li&gt;and of course, &lt;a href=&#34;https://www.saaspegasus.com/?via=brian&#34;&gt;SaaS Pegasus&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 218 - Balancing test coverage with test costs - Nicole Tietz-Sokolskaya</title>
      <link>https://pythontest.com/testandcode/episodes/218-balancing-test-coverage-with-test-costs/</link>
      <pubDate>Wed, 17 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/218-balancing-test-coverage-with-test-costs/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/218.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Nicole is a software engineer and writer, and recently wrote about the trade-offs we make when deciding which tests to write and how much testing is enough.&lt;/p&gt;&lt;p&gt;We talk about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Balancing schedule vs testing&lt;/li&gt;&lt;li&gt;How much testing is the right about of testing&lt;/li&gt;&lt;li&gt;Should code coverage be measured and tracked&lt;/li&gt;&lt;li&gt;Good refactoring can reduce code coverage&lt;/li&gt;&lt;li&gt;Is it worth testing error conditions?&lt;/li&gt;&lt;li&gt;Are rare error codes ok to just monitor?&lt;/li&gt;&lt;li&gt;API drift and autospec&lt;/li&gt;&lt;li&gt;Mitigating risk&lt;/li&gt;&lt;li&gt;Deciding what to test and what not to test&lt;/li&gt;&lt;li&gt;Focus testing on key money-making features &lt;/li&gt;&lt;li&gt;If there&#39;s a bug in this part of the code, how much business impact is there?&lt;/li&gt;&lt;li&gt;Performance testing needs to approximately match real world workloads&lt;/li&gt;&lt;li&gt;Cost of a service breaking vs the cost of creating, maintaining, and running tests&lt;/li&gt;&lt;li&gt;Keeping test suites quick to minimize getting distracted&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 217 - Podcasting / SaaS / Work Life Balance - Justin Jackson</title>
      <link>https://pythontest.com/testandcode/episodes/217-podcasting-saas-work-life-balance-justin-jackson/</link>
      <pubDate>Thu, 11 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/217-podcasting-saas-work-life-balance-justin-jackson/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/217.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;If you&#39;ve ever thought about starting a podcast or a SaaS project, you&#39;ll want to listen to this episode.&lt;br&gt; &lt;br&gt;Justin is one of the people who motivated me to get started podcasting. &lt;br&gt;He&#39;s also running a successful SaaS company, &lt;a href=&#34;https://transistor.fm/?via=okken&#34;&gt;transistor.fm&lt;/a&gt;, which hosts this podcast.&lt;/p&gt;&lt;p&gt;Topics:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Podcasting&lt;/li&gt;&lt;li&gt;Building new SaaS (software as a service) products&lt;/li&gt;&lt;li&gt;Balancing work, side hustle, and family&lt;/li&gt;&lt;li&gt;Great places to snowboard in British Columbia&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;BTW. This episode was recorded last summer before I switched to &lt;a href=&#34;https://transistor.fm/?via=okken&#34;&gt;transistor.fm&lt;/a&gt;.&lt;br&gt;I&#39;m now on Transistor for most of a year now, and I love it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 216 - ruff, uv, and Astral - Python tooling, much faster, with Rust</title>
      <link>https://pythontest.com/testandcode/episodes/ruff-astral-uv-charlie-marsh/</link>
      <pubDate>Mon, 11 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/ruff-astral-uv-charlie-marsh/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/216.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Charlie Marsh and team are using Rust to make Python tooling faster.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Ruff can take the place of Flake8, isort, and Black, and so much more.&lt;/li&gt;&lt;li&gt;uv can take the place of pip, pip-tools, and virtualenv&lt;/li&gt;&lt;li&gt;Astral is Charlie&#39;s venture backed company, and what they have with `ruff` and `uv` is just the start.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Since uv is the newest tool, there&#39;s quite a bit of the discussion diving into uv.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 215 - Staying Technical as a Manager</title>
      <link>https://pythontest.com/testandcode/episodes/215-staying-technical-as-a-manager/</link>
      <pubDate>Sun, 25 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/215-staying-technical-as-a-manager/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/215.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Software engineers that move into leadership roles have a struggle between learning leadership skills, maintaining technical skills, and learning new leadership and technical skills. &lt;br&gt;Matt Makai went from individual contributor to developer relations to leadership in devrel. &lt;br&gt;We discuss how to stay technical, as well as dive into some results of his studies in how companies use developer relationship channels.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 12 - Nikita Karamov - Russia, Germany, Django, and Jazzband</title>
      <link>https://pythontest.com/pythonpeople/episodes/nikita-karamov/</link>
      <pubDate>Thu, 08 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/nikita-karamov/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/12.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;Nikita Karamov is a Python developer and maintainer on various open source Python projects.&lt;/p&gt;&lt;p&gt;Some topics covered:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Notes on university education in programming and engineering vs theory&lt;/li&gt;&lt;li&gt;Jazzband for maintaining Django projects&lt;/li&gt;&lt;li&gt;Contributing to open source makes you a better programmer&lt;/li&gt;&lt;li&gt;Moving from Russia to Germany during college&lt;/li&gt;&lt;li&gt;Cultural differences between Russia, Germany, and Oregon&lt;/li&gt;&lt;li&gt;The nice lack of drama in the Python community&lt;/li&gt;&lt;li&gt;A lack of universities teaching Python for web development&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;Links from the show&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 214 - Python Testing in VS Code</title>
      <link>https://pythontest.com/testandcode/episodes/214-python-testing-in-vs-code/</link>
      <pubDate>Tue, 06 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/214-python-testing-in-vs-code/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/214.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;If you haven&#39;t tried running automated tests, especially with pytest,  in VS Code recently, you should take another look.&lt;br&gt;The Python for VS Code interface for testing, especially for pytest, has changed recently. &lt;br&gt;On this episode we discuss the change with the software engineer working on the pytest changes, Eleanor Boyd, and the product manager, Courtney Webster. &lt;/p&gt;&lt;p&gt;Links from the episode:&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest 8 is here</title>
      <link>https://pythontest.com/pytest/pytest-8-is-here/</link>
      <pubDate>Mon, 29 Jan 2024 20:00:00 +0800</pubDate>
      <guid>https://pythontest.com/pytest/pytest-8-is-here/</guid>
      <description>&lt;p&gt;pytest 8.0.0 was released on 17-Jan-2024, and I&amp;rsquo;m pretty excited about it.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m not going to cover all fo the changes, I&amp;rsquo;ll just highlight a few.&lt;br&gt;&#xA;For full set of changes, see the &lt;a href=&#34;https://docs.pytest.org/en/stable/changelog.html&#34;&gt;pytest changelog&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.pytest.org/en/stable/changelog.html#pytest-8-0-0rc1-2023-12-30&#34;&gt;Changes in 8.0.0rc1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.pytest.org/en/stable/changelog.html#pytest-8-0-0rc2-2024-01-17&#34;&gt;Changes in 8.0.0rc2&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.pytest.org/en/stable/changelog.html#pytest-8-0-0-2024-01-27&#34;&gt;Changes in 8.0.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;version-compatibility&#34;&gt;Version Compatibility&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Dropped support for Python 3.7, as it reached EOL last June.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;features-and-improvements&#34;&gt;Features and Improvements&lt;/h2&gt;&#xA;&lt;h3 id=&#34;improved-diffs&#34;&gt;Improved Diffs&lt;/h3&gt;&#xA;&lt;p&gt;Improved diffs that pytest prints when an assertion fails, including:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 213 - Repeating Tests</title>
      <link>https://pythontest.com/testandcode/episodes/213-repeating-tests/</link>
      <pubDate>Fri, 19 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/213-repeating-tests/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/213.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;If a test fails in a test suite, I&#39;m going to want to re-run the test. I may even want to re-run a test, or a subset of the suite, a bunch of times.  &lt;br&gt;There are a few pytest plugins that help with this:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pytest-dev/pytest-repeat&#34;&gt;pytest-repeat&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pytest-dev/pytest-rerunfailures&#34;&gt;pytest-rerunfailures&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/dropbox/pytest-flakefinder&#34;&gt;pytest-flakefinder&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pytest-dev/pytest-instafail&#34;&gt;pytest-instafail&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We talk about each of these in this episode.&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Transcript&lt;/summary&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s talk about repeating tests. I said, let&amp;rsquo;s talk about repeating tests. I couldn&amp;rsquo;t help myself. So today, we&amp;rsquo;re gonna talk about repeating tests and why we might wanna do that and how to use plugins to repeat the tests. If a test fails in the test suite, I&amp;rsquo;m gonna wanna rerun it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 11 - Pamela Fox - Teaching Python, Accessibility, and Tools</title>
      <link>https://pythontest.com/pythonpeople/episodes/pamela-fox/</link>
      <pubDate>Tue, 16 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/pamela-fox/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/11.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;Pamela Fox is a Python Cloud Developer Advocate at Microsoft. &lt;/p&gt;&lt;p&gt;&lt;br&gt;Topics include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Girl Develop It&lt;/li&gt;&lt;li&gt;Django Girls&lt;/li&gt;&lt;li&gt;Girls Who Code&lt;/li&gt;&lt;li&gt;Teaching a language vs teaching a tool&lt;/li&gt;&lt;li&gt;What a dev advocate does&lt;/li&gt;&lt;li&gt;Accessibility (A11y) testing&lt;/li&gt;&lt;li&gt;Playwright&lt;/li&gt;&lt;li&gt;axe-core&lt;/li&gt;&lt;li&gt;Snapshot testing&lt;/li&gt;&lt;li&gt;pytest plugin authoring&lt;/li&gt;&lt;li&gt;Flask SQLAlchemy&lt;/li&gt;&lt;li&gt;Relearning Go&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Links from the show:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pythonbytes.fm/episodes/show/323/ai-search-wars-have-begun&#34;&gt;Python Bytes 323 with Pamela: AI search wars have begun&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://podcast.pythontest.com/episodes/199-is-azure-right-for-a-side-project&#34;&gt;Python Test 199 with Pamela: Is Azure Right for a Side Project?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://girldevelopit.com&#34;&gt;gdi: Girl Develop It&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://djangogirls.org/en/&#34;&gt;Django Girls&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://girlswhocode.com&#34;&gt;Girls Who Code&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=J-4Qa6PSomM&#34;&gt;&#34;Automated accessibility audits&#34; - Pamela Fox (North Bay Python 2023)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://playwright.dev&#34;&gt;Playwright&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/dequelabs/axe-core&#34;&gt;axe-core&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pamelafox/pytest-axe-playwright-snapshot&#34;&gt;pytest-axe-playwright-snapshot&lt;/a&gt;, plugin from Pamela&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=kevcz8NRcQU&#34;&gt;pytest-crayons plugin is from a PyCascades talk about building plugins&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/okken/pytest-check&#34;&gt;pytest-check&lt;/a&gt;, yet another plugin&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://flask-sqlalchemy.palletsprojects.com/en/3.1.x/&#34;&gt;FlaskSQLAlchemy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=oV9rvDllKEg&#34;&gt;Concurrency is not Parallelism by Rob Pike&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 10 - Julian Sequeira - Pybites, Australia, Mindset, and Teaching New Programmers</title>
      <link>https://pythontest.com/pythonpeople/episodes/julian-sequeira/</link>
      <pubDate>Sat, 13 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/julian-sequeira/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/10.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;Julian Sequeira is a cofounder of Pybites. &lt;br&gt;He&#39;s a Python coach, a podcaster, a career mindset advocate, and is learning guitar.&lt;/p&gt;&lt;p&gt;Topics include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Learning guitar&lt;/li&gt;&lt;li&gt;Vacationing in Canada&lt;/li&gt;&lt;li&gt;Pybites&lt;/li&gt;&lt;li&gt;Splitting finances with Bob&lt;/li&gt;&lt;li&gt;Building a community and a team&lt;/li&gt;&lt;li&gt;Coaching&lt;/li&gt;&lt;li&gt;Conscious positivity&lt;/li&gt;&lt;li&gt;Australia is full of animals that want to kill you. Except kangaroos.&lt;/li&gt;&lt;li&gt;Teaching Python to non-technical people&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Show notes and resources can be found at &lt;a href=&#34;https://pythonpeople.fm&#34;&gt;pythonpeople.fm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;This podcast produced in conjunction with &lt;a href=&#34;https://pythontest.com&#34;&gt;pythontest.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Julian Sequeira&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 212 - Canon TDD - by Kent Beck</title>
      <link>https://pythontest.com/testandcode/episodes/212-canon-tdd-by-kent-beck/</link>
      <pubDate>Sat, 13 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/212-canon-tdd-by-kent-beck/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/212.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In 2002, Kent Beck released a book called  &#34;Test Driven Development by Example&#34;.&lt;br&gt;In December of 2023, Kent wrote an article called &#34;Canon TDD&#34;.&lt;br&gt;With Kent&#39;s permission, this episode contains the full content of the article.&lt;/p&gt;&lt;p&gt;Brian&#39;s commentary is saved for a followup episode.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://tidyfirst.substack.com/p/canon-tdd&#34;&gt;Canon TDD&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://bookshop.org/p/books/test-driven-development-by-example-kent-beck/115205&#34;&gt;Test Driven Development by Example&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Transcript&lt;/summary&gt;&#xA;&lt;p&gt;The late 1990s , Extreme Programming brought us a concept called &amp;ldquo;Test First Programming&amp;rdquo;. In 2002, Kent Beck released a book called &amp;ldquo;Test Driven Development by Example&amp;rdquo;. In December of 2023, Kent wrote an article called &amp;ldquo;Canon TDD&amp;rdquo;. With Kent&amp;rsquo;s permission, I am going to read that article in this episode. I&amp;rsquo;m gonna save my commentary for a follow-up episode.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 9 - Will Vincent - Django, Writing Technical Books</title>
      <link>https://pythontest.com/pythonpeople/episodes/will-vincent-django-writing-technical-books/</link>
      <pubDate>Sun, 07 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/will-vincent-django-writing-technical-books/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/9.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;Will Vincent is a former board member of the Django Software Foundation. He&#39;s written 3 books on Django, writes a django newsletter, is a podcast co-host for Django Chat.&lt;/p&gt;&#xA;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Show notes and resources can be found at &lt;a href=&#34;https://pythonpeople.fm&#34;&gt;pythonpeople.fm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;This podcast produced in conjunction with &lt;a href=&#34;https://pythontest.com&#34;&gt;pythontest.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Will Vincent&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 211 - Stamp out test dependencies with pytest plugins</title>
      <link>https://pythontest.com/testandcode/episodes/211-stamp-out-test-dependencies-with-pytest-plugins/</link>
      <pubDate>Fri, 15 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/211-stamp-out-test-dependencies-with-pytest-plugins/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/211.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;We want to be able to run tests in a suite, and debug them in isolation, and have the behavior be the same.  &lt;br&gt;If the behavior is different in isolation vs in a suite, it&#39;s a nightmare to debug. &lt;/p&gt;&lt;p&gt;In this episode, we&#39;ll talk about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Causes of dependence&lt;/li&gt;&lt;li&gt;Testing for dependencies using plugins&lt;/li&gt;&lt;li&gt;Debugging test dependencies&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Plugins discussed:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;pytest-randomly&lt;/li&gt;&lt;li&gt;pytest-reverse&lt;/li&gt;&lt;li&gt;pytest-random-order&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 210 - TDD - Refactor while green</title>
      <link>https://pythontest.com/testandcode/episodes/210-tdd-refactor-while-green/</link>
      <pubDate>Wed, 29 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/210-tdd-refactor-while-green/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/210.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Test Driven Development. Red, Green, Refactor. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Do we have to do the refactor part? &lt;/li&gt;&lt;li&gt;Does the refactor at the end include tests? &lt;/li&gt;&lt;li&gt;Or can I refactor the tests at any time?&lt;/li&gt;&lt;li&gt;Why is refactor at the end? &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This episode is to talk about this with a an example.&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Transcript&lt;/summary&gt;&#xA;&lt;p&gt;Test driven development. Red, green refactor. Do we have to do the refactor part? Does the refactor at the end include tests? Or can I refactor the test at any time?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing argparse Applications</title>
      <link>https://pythontest.com/testing-argparse-apps/</link>
      <pubDate>Thu, 16 Nov 2023 07:20:00 -0800</pubDate>
      <guid>https://pythontest.com/testing-argparse-apps/</guid>
      <description>&lt;p&gt;I was asked recently about how to test the argument parsing bit of an application that used &lt;a href=&#34;https://docs.python.org/3/library/argparse.html&#34;&gt;&lt;code&gt;argparse&lt;/code&gt;&lt;/a&gt;. &lt;code&gt;argparse&lt;/code&gt; is a built in Python library for dealing with parsing command line arguments for command line interfaces, CLI&amp;rsquo;s.&lt;/p&gt;&#xA;&lt;p&gt;You know, like &lt;code&gt;git clone &amp;lt;repo address&amp;gt;&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;git&lt;/code&gt; is the application.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;lt;repo address&amp;gt;&lt;/code&gt; is a command line argument.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;clone&lt;/code&gt; is a sub-command.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Well, that might be a bad example, as I&amp;rsquo;m not going to use subcommands in my example, but lots of this still applies, even if you are using subcommands. Anyway, loads of applications use command line arguments, also sometimes called flags and options.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 209 - Testing argparse Applications</title>
      <link>https://pythontest.com/testandcode/episodes/209-testing-argparse-applications/</link>
      <pubDate>Thu, 16 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/209-testing-argparse-applications/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/209.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;How do you test the argument parsing bit of an application that uses argparse?&lt;/p&gt;&lt;p&gt;This episode covers:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Design for Test: Structuring your app or script so it&#39;s easier to test.&lt;/li&gt;&lt;li&gt;pytest &amp; capsys for testing stdout&lt;/li&gt;&lt;li&gt;Adding debug and preview flags for debugging and testing&lt;/li&gt;&lt;li&gt;And reverting to subprocess.run if you can&#39;t modify the code under test&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Also, there&#39;s a full writeup and code samples available:&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest slow order</title>
      <link>https://pythontest.com/pytest-slow-order/</link>
      <pubDate>Thu, 02 Nov 2023 14:39:00 -0700</pubDate>
      <guid>https://pythontest.com/pytest-slow-order/</guid>
      <description>&lt;p&gt;I received a question the other day about combining the notion of marking slow tests and ordering them to run the slow tests first.&lt;/p&gt;&#xA;&lt;p&gt;This post describes a bit of background and a solution to the problem.&lt;/p&gt;&#xA;&lt;h2 id=&#34;pytestmarkslow&#34;&gt;@pytest.mark.slow&lt;/h2&gt;&#xA;&lt;p&gt;It&amp;rsquo;s possible to mark slow tests with &lt;code&gt;@pytest.mark.slow&lt;/code&gt; and then either run or skip the slow tests.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;To run slow tests: &lt;code&gt;pytest -m slow&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;To skip slow tests: &lt;code&gt;pytest -m &amp;quot;not slow&amp;quot;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;With the &lt;a href=&#34;https://pypi.org/project/pytest-skip-slow/&#34;&gt;pytest-skip-slow&lt;/a&gt; plugin, you can:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 208 - Tests with no assert statements</title>
      <link>https://pythontest.com/testandcode/episodes/208-tests-with-no-assert-statements/</link>
      <pubDate>Sun, 29 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/208-tests-with-no-assert-statements/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/208.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Why on earth would you want to write a test with no assert statements?&lt;br&gt;After all, aren&#39;t assert statements how you decide wether a test passes or fails?&lt;/p&gt;&lt;p&gt;In this episode, we walk through a handful of useful examples of test code without asserts.&lt;br&gt;We also talk about how these types of tests are a great way to dip your toe into testing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 8 - Carlton Gibson - Django, Spain, Parenting, and Open Source</title>
      <link>https://pythontest.com/pythonpeople/episodes/carlton-gibson/</link>
      <pubDate>Wed, 25 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/carlton-gibson/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/8.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;Carlton recently stepped down as a Django Fellow, maintains many Django related projects, is starting two SaaS companies, and is a podcast host on &#34;Django Chat&#34;.&lt;/p&gt;&lt;p&gt;Some of what we talk about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Being a Django fellow for 5 years&lt;/li&gt;&lt;li&gt;Maintaining several Django related open source projects&lt;/li&gt;&lt;li&gt;Client work &lt;/li&gt;&lt;li&gt;Time with family&lt;/li&gt;&lt;li&gt;Building a couple Software as a Service projects&lt;/li&gt;&lt;li&gt;Kids and travel&lt;/li&gt;&lt;li&gt;Kids and food&lt;/li&gt;&lt;li&gt;Living in Spain as a British citizen&lt;/li&gt;&lt;li&gt;How Brexit has affected his options&lt;/li&gt;&lt;li&gt;Being an open source maintainer and that it&#39;s ok to pause it when life takes precedence.&lt;/li&gt;&lt;li&gt;Being kind to other maintainers and acknowledging them as human&lt;/li&gt;&lt;li&gt;Django 5 form template imporovements&lt;/li&gt;&lt;li&gt;Good places to be a tourist in Spain&lt;/li&gt;&lt;li&gt;Spains wonderful train system&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Show notes and resources can be found at &lt;a href=&#34;https://pythonpeople.fm&#34;&gt;pythonpeople.fm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;This podcast produced in conjunction with &lt;a href=&#34;https://pythontest.com&#34;&gt;pythontest.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Carlton Gibson&lt;/p&gt;</description>
    </item>
    <item>
      <title>Upgrading to Python 3.12 and my battle with virtualenv cache</title>
      <link>https://pythontest.com/posts/2023/2023-10-02-py312-impimporter/</link>
      <pubDate>Mon, 02 Oct 2023 12:29:07 -0700</pubDate>
      <guid>https://pythontest.com/posts/2023/2023-10-02-py312-impimporter/</guid>
      <description>&lt;p&gt;&lt;em&gt;edited Oct 3, 2023 with a new fix and a new understanding of the problem&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Initial title was &amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Python 3.12 + &amp;quot;AttributeError: module &amp;lsquo;pkgutil&amp;rsquo; has no attribute &amp;lsquo;ImpImporter&amp;rsquo;. Did you mean: &amp;lsquo;zipimporter&amp;rsquo;?&amp;quot;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;This is a tale of upgrading Python 3.12&lt;/p&gt;&#xA;&lt;p&gt;I ran into this error while I was trying to update a project to test on Python 3.12:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  File &amp;#34;/Users/okken/Library/Application Support/virtualenv/wheel/house/pip-23.0.1-py3-none-any.whl/pip/_internal/metadata/importlib/_envs.py&amp;#34;, line 123, in _find_eggs_in_zip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    from pip._vendor.pkg_resources import find_eggs_in_zip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  File &amp;#34;/Users/okken/Library/Application Support/virtualenv/wheel/house/pip-23.0.1-py3-none-any.whl/pip/_vendor/pkg_resources/__init__.py&amp;#34;, line 2164, in &amp;lt;module&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    register_finder(pkgutil.ImpImporter, find_on_path)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    ^^^^^^^^^^^^^^^^^^^&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AttributeError: module &amp;#39;pkgutil&amp;#39; has no attribute &amp;#39;ImpImporter&amp;#39;. Did you mean: &amp;#39;zipimporter&amp;#39;?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;py312: internal error&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Specifically:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 207 - pytest course, pytest-repeat and pytest-flakefinder</title>
      <link>https://pythontest.com/testandcode/episodes/207-pytest-course-repeat-flakefinder/</link>
      <pubDate>Mon, 25 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/207-pytest-course-repeat-flakefinder/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/207.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ul&gt;&lt;li&gt;New course: &lt;a href=&#34;https://pythontest.com/courses&#34;&gt;&#34;The Complete pytest Course&#34;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pytest-dev/pytest-repeat&#34;&gt;pytest-repeat&lt;/a&gt;, which I&#39;m starting to contribute to&lt;ul&gt;&lt;li&gt;Give `--repeat-scope` a try. You can use it to change from repeating every test to repeating the session, module, or class.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/dropbox/pytest-flakefinder&#34;&gt;pytest-flakefinder&lt;/a&gt;, which is an alternative to pytest-repeat&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/okken/pytest-check&#34;&gt;pytest-check&lt;/a&gt; is completely unrelated, but mentioned in the show&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Transcript&lt;/summary&gt;&#xA;&lt;p&gt;Okay. We&amp;rsquo;re gonna talk about a whole bunch of stuff in this episode. It&amp;rsquo;s kind of a catch up thing. I&amp;rsquo;ve been working on a video course, for Pytest. Basically, it&amp;rsquo;s based on I know I already have a course that&amp;rsquo;s on the talk Python training.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 7 - Mariatta Wijaya - Python Documentation, PyLadies, Keeping Fish, Public Speaking</title>
      <link>https://pythontest.com/pythonpeople/episodes/mariatta-wijaya/</link>
      <pubDate>Thu, 14 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/mariatta-wijaya/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/7.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;Mariatta has been a contributor to Python for many years and is a very inspiring public speaker.&lt;/p&gt;&lt;p&gt;Some of what we talk about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Python Documentation Working Group&lt;/li&gt;&lt;li&gt;GitHub bots, &lt;a href=&#34;https://mariatta.ca/posts/talks/theres-an-api-for-that/&#34;&gt;There&#39;s an API for that&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pyladies.com&#34;&gt;PyLadies&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://conference.pyladies.com&#34;&gt;PyLadiesCon&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Typo of the Day (maintainerd, verbossity, work-lie balance, etc.)&lt;/li&gt;&lt;li&gt;A fish aquarium&lt;/li&gt;&lt;li&gt;Cooking, Baking&lt;/li&gt;&lt;li&gt;History of Tempura&lt;/li&gt;&lt;li&gt;Working with APIs with Python&lt;/li&gt;&lt;li&gt;Public Speaking / Giving Talks&lt;/li&gt;&lt;li&gt;The power of seeing other women give talks&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Show notes and resources can be found at &lt;a href=&#34;https://pythonpeople.fm&#34;&gt;pythonpeople.fm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;This podcast produced in conjunction with &lt;a href=&#34;https://pythontest.com&#34;&gt;pythontest.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Mariatta Wijaya&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 6 - Naomi Ceder - Quick Python, Leadership Transitions, Diversity</title>
      <link>https://pythontest.com/pythonpeople/episodes/naomi-ceder/</link>
      <pubDate>Tue, 29 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/naomi-ceder/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/6.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;Naomi is an elected fellow of the PSF, and has served as chair of its board of directors. &lt;/p&gt;&lt;p&gt;Topics:&lt;br&gt;- Building replacement leadership for every endeavor you start&lt;br&gt;- What the PSF board does&lt;br&gt;- Keeping Python&#39;s growth in increasing diversity&lt;br&gt;- Learning foreign languages&lt;br&gt;- PyCon Charlas&lt;br&gt;- London&lt;br&gt;- Guitar and music&lt;br&gt;- The Quick Python Book&lt;br&gt;- Community building&lt;br&gt;- Retiring&lt;/p&gt;&#xA;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Show notes and resources can be found at &lt;a href=&#34;https://pythonpeople.fm&#34;&gt;pythonpeople.fm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;This podcast produced in conjunction with &lt;a href=&#34;https://pythontest.com&#34;&gt;pythontest.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Naomi Ceder&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 206 - TDD in Context</title>
      <link>https://pythontest.com/testandcode/episodes/206-tdd-in-context/</link>
      <pubDate>Wed, 23 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/206-tdd-in-context/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/206.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;TDD (Test Driven Development) started from Test First Programming, and has been around at least since the 90&#39;s. &lt;/p&gt;&lt;p&gt;However, software tools and available CI systems have changed quite a bit since then. &lt;br&gt;Maybe it&#39;s time to re-examine the assumptions, practices, processes, and principles of TDD. &lt;br&gt; &lt;br&gt;At least in the context of my software engineering career, modifications to TDD, at least the version of TDD as it&#39;s frequently taught, have been necessary. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 5 - Bob Belderbos - Python Challengs, Coaching, Spain</title>
      <link>https://pythontest.com/pythonpeople/episodes/bob-belderbos/</link>
      <pubDate>Wed, 09 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/bob-belderbos/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/5.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;Bob Belderbos built Pybites with Julian Sequeira. Pybites started with code challenges to help people learn Python, and has grown into a learning platform and community, and now includes coaching.&lt;/p&gt;&lt;p&gt;We talk about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The history of Pybites&lt;/li&gt;&lt;li&gt;Code challenges&lt;/li&gt;&lt;li&gt;Coaching and now even growing the team of coaches&lt;/li&gt;&lt;li&gt;Spain&lt;/li&gt;&lt;li&gt;Books&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pybit.es&#34;&gt;PyBites&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://codechalleng.es&#34;&gt;Code Challenges platform&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;and you can hear your name on the show. How cool is that?&lt;/p&gt;&#xA;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Show notes and resources can be found at &lt;a href=&#34;https://pythonpeople.fm&#34;&gt;pythonpeople.fm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;This podcast produced in conjunction with &lt;a href=&#34;https://pythontest.com&#34;&gt;pythontest.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Bob Belderbos&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 4 - Barry Warsaw - OG Python, Bass Guitar, Tai Chi</title>
      <link>https://pythontest.com/pythonpeople/episodes/barry-warsaw/</link>
      <pubDate>Fri, 04 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/barry-warsaw/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/4.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;Barry Warsaw has been with Python almost from the beginning, and is still at it.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The early days of Python&lt;/li&gt;&lt;li&gt;The tone and feel of the Python community came from Guido&lt;/li&gt;&lt;li&gt;Tai Chi&lt;/li&gt;&lt;li&gt;Meditation&lt;/li&gt;&lt;li&gt;Bass Guitar&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Stick around until the very end of the show for a special treat, Barry Warsaw and The Zen of Python.&lt;/p&gt;&lt;p&gt;Links from the show:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Cheng_Man-ch%27ing&#34;&gt;Cheng Man-ch&#39;ing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://soundcloud.com/pumpichank&#34;&gt;Barry&#39;s soundcloud&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/@thezbwedicon3541&#34;&gt;Barry on YouTube&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://peps.python.org/pep-0401/&#34;&gt;Barry is the official Python FLUFL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.wefearchange.org/2020/05/zenofpython.rst.html&#34;&gt;The Zen of Python, put to music&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Show notes and resources can be found at &lt;a href=&#34;https://pythonpeople.fm&#34;&gt;pythonpeople.fm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;This podcast produced in conjunction with &lt;a href=&#34;https://pythontest.com&#34;&gt;pythontest.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Barry Warsaw&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 205 - pytest autouse fixtures</title>
      <link>https://pythontest.com/testandcode/episodes/pytest-autouse-fixtures/</link>
      <pubDate>Mon, 31 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/pytest-autouse-fixtures/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/205.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;On a recent episode of PythonBytes, I suggested it&#39;s hard to come up with good examples for pytest autouse fixtures, as there aren&#39;t very many good reasons to use them.  James Falcon was kind enough to reach out and correct me. &lt;/p&gt;&lt;p&gt;In this episode, we describe:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;what fixtures are&lt;/li&gt;&lt;li&gt;what autouse fixtures are&lt;/li&gt;&lt;li&gt;great reasons to use them&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 3 - Brett Cannon - Core Python, Fountain Pens</title>
      <link>https://pythontest.com/pythonpeople/episodes/brett-cannon/</link>
      <pubDate>Tue, 25 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/brett-cannon/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/3.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;Topics:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;“I don&#39;t know about the rest of you... I came for the language, but I stayed for the community.&#34; Brett Cannon, Python Core Dev, Pycon US 2014 Opening remarks&lt;/li&gt;&lt;li&gt;Public speaking&lt;/li&gt;&lt;li&gt;Being encouraging to others&lt;/li&gt;&lt;li&gt;Why Canada&lt;/li&gt;&lt;li&gt;Meanings of Back Bacon, Toque, and Pop&lt;/li&gt;&lt;li&gt;Walking in Vancouver&lt;/li&gt;&lt;li&gt;Snowshoeing&lt;/li&gt;&lt;li&gt;Philosophy and thinking logically&lt;/li&gt;&lt;li&gt;Proving the existence of God&lt;/li&gt;&lt;li&gt;Rewriting code. “You’re probably going to have to write this 3 times before you’re happy with it.”&lt;/li&gt;&lt;li&gt;1 week per month on technical debt.&lt;/li&gt;&lt;li&gt;Fountain pens&lt;/li&gt;&lt;li&gt;Writing a gratitude journal&lt;/li&gt;&lt;li&gt;Books&lt;/li&gt;&lt;li&gt;“What goes on in your brain is not the same as everyone else’s.”&lt;/li&gt;&lt;li&gt;&#34;Steeped in the world of tea.&#34; - nice pun&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Links from the show:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 2 - Paul Everitt - Early Python, Coaching</title>
      <link>https://pythontest.com/pythonpeople/episodes/paul-everitt/</link>
      <pubDate>Tue, 18 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/paul-everitt/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/2.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;Paul Everitt is a developer advocate for JetBrains and PyCharm. &lt;br&gt;Covered topics include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The transition of Python from BDFL to steering committee&lt;/li&gt;&lt;li&gt;Brainstorming topics for this podcast&lt;/li&gt;&lt;li&gt;Django, function based vs class based views, and Nancy Pelosi&lt;/li&gt;&lt;li&gt;Coaching Lacrosse, &#34;we&#39;re not in the lacrosse business, we&#39;re in the leadership business&#34;&lt;/li&gt;&lt;li&gt;Sports, if done the right way, can be a positive influence&lt;/li&gt;&lt;li&gt;We don&#39;t need heroes, we need the next generation of heroes&lt;/li&gt;&lt;li&gt;Volunteering work is a lot like open source&lt;/li&gt;&lt;li&gt;Skateboarding and collaboration over competition&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 204 - Free Your Inner Nonfiction Writer - Johanna Rothman</title>
      <link>https://pythontest.com/testandcode/episodes/free-your-inner-nonfiction-writer/</link>
      <pubDate>Tue, 18 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/free-your-inner-nonfiction-writer/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/204.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Learn how to write nonfiction fast and well.&lt;br&gt;Johanna Rothman joins the show to discuss writing nonfiction.&lt;/p&gt;&lt;p&gt;Johanna&#39;s book: &lt;a href=&#34;https://pragprog.com/titles/d-jrnfwriter/free-your-inner-nonfiction-writer/&#34;&gt;Free Your Inner Nonfiction Writer&lt;/a&gt;&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Johanna Rothman&lt;/p&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Transcript&lt;/summary&gt;&#xA;&lt;p&gt;Brian: On test and code today, I am thrilled to have Johanna Rothman. She is a fellow author from the&lt;/p&gt;&#xA;&lt;p&gt;wonderful Pragmatic Bookshelf Company, and, and we&amp;rsquo;re gonna talk about a whole bunch of stuff, including, writing books. So, welcome, Johanna.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 203 - Open Source at Intel</title>
      <link>https://pythontest.com/testandcode/episodes/open-source-at-intel/</link>
      <pubDate>Mon, 17 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/open-source-at-intel/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/203.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Open Source is important to Intel and has been for a very long time.&lt;/p&gt;&lt;p&gt;Joe Curley, vice president and general manager of software products and ecosystem, and Arun Gupta, vice president and general manager for open ecosystems, join the show to discuss open source, OneAPI, and open ecosystems at Intel.&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Arun Gupta, Joe Curley&lt;/p&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Transcript&lt;/summary&gt;&#xA;&lt;p&gt;Brian: Welcome to Test and Code. We have a couple of special guests from Intel, Joe Kerley and Arun Gupta, and I wanted to have them on to talk about Intel&amp;rsquo;s involvement is with open source. Let&amp;rsquo;s do a quick introduction, for each of you. Let&amp;rsquo;s start with Arun. Can you introduce yourself?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python People 1 - Michael Kennedy - Talk Python and Motorcycles</title>
      <link>https://pythontest.com/pythonpeople/episodes/michael-kennedy/</link>
      <pubDate>Thu, 06 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pythonpeople/episodes/michael-kennedy/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://pythonpeople.sfo3.cdn.digitaloceanspaces.com/1.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;p&gt;Michael is the host of the podcasts &lt;a href=&#34;https://talkpython.fm&#34;&gt;Talk Python to Me&lt;/a&gt; and &lt;a href=&#34;https://pythonbytes.fm&#34;&gt;Python Bytes&lt;/a&gt; and runs the Python online course site &lt;a href=&#34;https://training.talkpython.fm&#34;&gt;Talk Python Training&lt;/a&gt;.&lt;br&gt;He is also pretty serious about motorcycling, spends some time with simulated racing, and used to play billiards for cash.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Show notes and resources can be found at &lt;a href=&#34;https://pythonpeople.fm&#34;&gt;pythonpeople.fm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;This podcast produced in conjunction with &lt;a href=&#34;https://pythontest.com&#34;&gt;pythontest.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Michael Kennedy&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 202 - Using Towncrier to Keep a Changelog - Hynek Schlawack</title>
      <link>https://pythontest.com/testandcode/episodes/202-using-towncrier-to-keep-a-changelog/</link>
      <pubDate>Wed, 31 May 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/202-using-towncrier-to-keep-a-changelog/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/202.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Hynek joins the show to discuss towncrier. &lt;/p&gt;&lt;p&gt;At the top of the towncrier documentation, it says &#34;towncrier is a utility to produce useful, summarized news files (also known as changelogs) for your project.&#34;&lt;/p&gt;&lt;p&gt;Towncrier is used by &#34;Twisted, pytest, pip, BuildBot, and attrs, among others.&#34;&lt;/p&gt;&lt;p&gt;This is the last of 3 episodes focused on keeping a CHANGELOG. &lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://pythontest.com/testandcode/200&#34;&gt;Episode 200&lt;/a&gt; kicked off the series with keepachangelog.com and Olivier Lacan&lt;br&gt; In &lt;a href=&#34;https://pythontest.com/testandcode/201&#34;&gt;201&lt;/a&gt; we had Ned Batchelder discussing scriv.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 201 - Avoid merge conflicts on your CHANGELOG with scriv - Ned Batchelder</title>
      <link>https://pythontest.com/testandcode/episodes/201-avoid-merge-conflicts-on-your-changelog-with-scriv/</link>
      <pubDate>Thu, 25 May 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/201-avoid-merge-conflicts-on-your-changelog-with-scriv/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/201.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Last week we talked about the importance of keeping a changelog.&lt;br&gt; This week we talk with Ned Batchelder about scriv, a tool to help maintain that changelog.&lt;/p&gt;&lt;p&gt;Scriv &#34;is a command-line tool for helping developers maintain useful changelogs. It manages a directory of changelog fragments. It aggregates them into entries in a CHANGELOG file.&#34;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/nedbat/scriv&#34;&gt;nedbat/scriv: Changelog management tool&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 200 - Keep a CHANGELOG</title>
      <link>https://pythontest.com/testandcode/episodes/200-keep-a-changelog/</link>
      <pubDate>Fri, 19 May 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/200-keep-a-changelog/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/200.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A changelog is a file which contains a curated, chronologically ordered list of notable changes for each version of a project.&lt;br&gt; This episode is about what a changelog is, with an interview with Olivier Lacan, creator of &lt;a href=&#34;https://keepachangelog.com&#34;&gt;keepachangelog.com&lt;/a&gt;.&lt;br&gt; The next two episodes talk about some tools to help software project teams keep changelogs while avoiding merge conflicts. &lt;/p&gt;&lt;p&gt;Special Guest: Olivier Lacan.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 199 - Is Azure Right for a Side Project? - Pamela Fox</title>
      <link>https://pythontest.com/testandcode/episodes/199-is-azure-right-for-a-side-project/</link>
      <pubDate>Thu, 04 May 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/199-is-azure-right-for-a-side-project/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/199.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;For a web side project to go from &#34;working on desktop&#34; to &#34;live in the cloud&#34;, one decision that needs to be made is where to host everything. One option is Microsoft Azure. Lots of corporate sites use it. Is it right for side projects? &lt;/p&gt;&lt;p&gt;Pamela Fox, a Cloud Advocate for Python at Microsoft, joins the show to help us with that question.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 198 - Testing Django Web Applications - Carlton Gibson, Will Vincent</title>
      <link>https://pythontest.com/testandcode/episodes/198-testing-django-web-applications/</link>
      <pubDate>Thu, 27 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/198-testing-django-web-applications/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/198.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Django has some built in ways to test your application. There&#39;s also pytest-django and other plugins that help with testing. Carlton Gibson and Will Vincent from the Django Chat Podcast join the show to discuss how to get started testing your Django application.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Carlton Gibson, Will Vincent&lt;/p&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Transcript&lt;/summary&gt;&#xA;&lt;p&gt;Brian: One of the most popular questions I get is, how do I test my web application? But I am starting a project and I&amp;rsquo;m thinking about this of, like, how do I make sure it&amp;rsquo;s working right? So how do I how do I start testing with Django, and what do I need to think about?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 197 - Python project trove classifiers - Do you need this bit of pyproject.toml metadata? - Brett Cannon</title>
      <link>https://pythontest.com/testandcode/episodes/197-python-project-trove-classifiers-do-you-need-this-bit-of-pyproject-toml-metadata/</link>
      <pubDate>Tue, 04 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/197-python-project-trove-classifiers-do-you-need-this-bit-of-pyproject-toml-metadata/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/197.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Classifiers are one bit of Python project metadata that predates PyPI.&lt;/p&gt;&lt;p&gt; Classifiers are weird.&lt;/p&gt;&lt;p&gt; They were around in setuptools days, and are still here with pyproject.toml. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;What are they? &lt;/li&gt;&lt;li&gt;Why do we need them? &lt;/li&gt;&lt;li&gt;Do we need them?&lt;/li&gt;&lt;li&gt;Which classifiers should I include?&lt;/li&gt;&lt;li&gt;Why are they called &#34;trove classifiers&#34; in the &lt;a href=&#34;https://pypi.org/classifiers/&#34;&gt;Python docs&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Brett Cannon joins the show to discuss these wacky bits of metadata.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 196 - I am not a supplier - Thomas Depierre</title>
      <link>https://pythontest.com/testandcode/episodes/196-i-am-not-a-supplier/</link>
      <pubDate>Thu, 30 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/196-i-am-not-a-supplier/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/196.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Should we think of open source components the same way we think of physical parts for manufactured goods?&lt;/p&gt;&lt;p&gt; There are problems with supply chain analogy when applied to software.&lt;/p&gt;&lt;p&gt; Thomas Depierre discusses some of those issues in this episode. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://www.softwaremaxims.com/blog/not-a-supplier&#34;&gt;I am not a supplier - article&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Thomas Depierre&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sharing is Caring - Sharing pytest Fixtures - PyCascades 2023</title>
      <link>https://pythontest.com/pycascades-2023/</link>
      <pubDate>Sun, 19 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pycascades-2023/</guid>
      <description>&lt;p&gt;Slides and code and such for a talk for PyCascades 2023.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Talk page: &lt;a href=&#34;https://2023.pycascades.com/program/talks/sharing-is-caring-sharing-pytest-fixtures/&#34;&gt;Sharing is Caring - Sharing pytest Fixtures&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Summary:&lt;/p&gt;&#xA;&lt;p&gt;pytest rocks, obviously. When people start using pytest as a team, they often come up with cool fixtures that would be great to share across projects. In fact, many great Python packages come pre-loaded with pytest fixtures. This talk describes how easy it is to share fixtures using the pytest plugin model.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 195 - What would you change about pytest? - Anthony Sottile</title>
      <link>https://pythontest.com/testandcode/episodes/195-what-would-you-change-about-pytest/</link>
      <pubDate>Wed, 08 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/195-what-would-you-change-about-pytest/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/195.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Anthony Sottile and Brian discuss changes that would be cool for pytest, even unrealistic changes. These are changes we&#39;d make to pytest if we didn&#39;t ahve to care about backwards compatibilty.&lt;/p&gt;&lt;p&gt;Anthony&#39;s list:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The import system&lt;/li&gt;&lt;li&gt;Multi-process support out of the box&lt;/li&gt;&lt;li&gt;Async support&lt;/li&gt;&lt;li&gt;Changes to the fixture system&lt;/li&gt;&lt;li&gt;Extend the assert rewriting to make it modular&lt;/li&gt;&lt;li&gt;Add matchers to assert mechanism&lt;/li&gt;&lt;li&gt;Ban test class inheritance&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Brian&#39;s list: &lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest tips and tricks</title>
      <link>https://pythontest.com/pytest-tips-tricks/</link>
      <pubDate>Mon, 27 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pytest-tips-tricks/</guid>
      <description>&lt;p&gt;This is a set of tips/tricks for learning and using pytest.&lt;br&gt;&#xA;I&amp;rsquo;ll probably build on the list, so feel free to share with me items you think should be in the list.&lt;br&gt;&#xA;Many items really deserve more explanation, and maybe full posts. Let me know if there&amp;rsquo;s something you&amp;rsquo;d like more in depth discussion of.&lt;/p&gt;&#xA;&lt;p&gt;Note: I&amp;rsquo;m not numbering these, because I don&amp;rsquo;t want to keep track of order. Also, this is more of a brain dump, and not a prioritized list.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fixing Circular Imports in Python with Protocol</title>
      <link>https://pythontest.com/fix-circular-import-python-typing-protocol/</link>
      <pubDate>Mon, 23 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/fix-circular-import-python-typing-protocol/</guid>
      <description>&lt;p&gt;The problem started when I had two classes that needed to talk to each other.  Sometimes, classes need to talk to each other in both directions.&lt;/p&gt;&#xA;&lt;p&gt;The following example is made up, but mostly behaves like the original problem.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s say I have a &lt;code&gt;Director&lt;/code&gt; and an &lt;code&gt;Actor&lt;/code&gt;.&lt;br&gt;&#xA;The &lt;code&gt;Director&lt;/code&gt; tells the &lt;code&gt;Actor&lt;/code&gt; to &lt;code&gt;do_action()&lt;/code&gt;.&lt;br&gt;&#xA;In order to do the action, the &lt;code&gt;Actor&lt;/code&gt; needs to &lt;code&gt;get_data()&lt;/code&gt; from the &lt;code&gt;Director&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s our &lt;strong&gt;director.py&lt;/strong&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing with Python 3.12</title>
      <link>https://pythontest.com/testing-with-python-3-12/</link>
      <pubDate>Mon, 05 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testing-with-python-3-12/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.python.org/downloads/release/python-3120a2/&#34;&gt;Python 3.12.0a2&lt;/a&gt; is out. So now may be a great time to get your projects to start testing against 3.12.&lt;/p&gt;&#xA;&lt;h2 id=&#34;note-about-alpha-releases-of-python&#34;&gt;Note about alpha releases of Python&lt;/h2&gt;&#xA;&lt;p&gt;This is from &lt;a href=&#34;https://www.python.org/downloads/release/python-3120a2/&#34;&gt;the same link as above&lt;/a&gt;: &amp;ldquo;During the alpha phase, features may be added up until the start of the beta phase (2023-05-08) and, if necessary, may be modified or deleted up until the release candidate phase (2023-07-31). Please keep in mind that this is a preview release and its use is not recommended for production environments.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Talk -  Sharing is Caring - pytest fixture edition</title>
      <link>https://pythontest.com/sharing-pytest-fixtures/</link>
      <pubDate>Sat, 10 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/sharing-pytest-fixtures/</guid>
      <description>&lt;h1 id=&#34;sharing-is-caring-pytest-fixture-edition&#34;&gt;Sharing is Caring, pytest fixture edition&lt;/h1&gt;&#xA;&lt;p&gt;I gave a talk at PyBay 2022 with the above title.&#xA;It&amp;rsquo;s about sharing fixtures.&lt;/p&gt;&#xA;&lt;p&gt;The source code, and the slides, are at &lt;a href=&#34;https://github.com/okken/pytest_fixture_sharing&#34;&gt;github.com/okken/pytest_fixture_sharing&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 193 - The Good Research Code Handbook - Patrick Mineault</title>
      <link>https://pythontest.com/testandcode/episodes/193-the-good-research-code-handbook-patrick-mineault/</link>
      <pubDate>Tue, 30 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/193-the-good-research-code-handbook-patrick-mineault/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/193.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I don&#39;t think it&#39;s too much of a stretch to say that software is part of most scientific research now.&lt;br&gt; From astronomy, to neuroscience, to chemistry, to climate models. &lt;br&gt; If you work in research that hasn&#39;t been affected by software yet, just wait.&lt;/p&gt;&lt;p&gt;But how good is that software? &lt;/p&gt;&lt;p&gt;How much of common best practices in software development are making it to those writing software in the sciences?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 192 - Learn to code through game development with PursuedPyBear - Piper Thunstrom</title>
      <link>https://pythontest.com/testandcode/episodes/192-learn-to-code-through-game-development-with-pursuedpybear-piper-thunstrom/</link>
      <pubDate>Sat, 06 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/192-learn-to-code-through-game-development-with-pursuedpybear-piper-thunstrom/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/192.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The first game I remember coding, or at least copying from a magazine, was in Basic. It was Lunar Lander. &lt;/p&gt;&lt;p&gt;Learning to code a game is a way that a lot of people get started and excited about programming. &lt;/p&gt;&lt;p&gt;Of course, I don&#39;t recommend Basic. Now we&#39;ve got Python. And one of the game engines available for Python is PursuedPyBear, a project started by Piper Thunstrom. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 191 - Running your own site for fun and absolutely no profit whatsoever - Brian Wisti</title>
      <link>https://pythontest.com/testandcode/episodes/191-running-your-own-site-for-fun-and-absolutely-no-profit-whatsoever-brian-wisti/</link>
      <pubDate>Fri, 01 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/191-running-your-own-site-for-fun-and-absolutely-no-profit-whatsoever-brian-wisti/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/191.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Having a personal site is a great playground for learning tons of skills. Brian Wisti discusses the benefits of running a his own blog over the years.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://randomgeekery.org/&#34;&gt;Random Geekery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Jamstack&#34;&gt;Jamstack&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.11ty.dev/&#34;&gt;Eleventy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.netlify.com/&#34;&gt;Netlify&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://plausible.io/&#34;&gt;Plausible Analytics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/pytest-book/&#34;&gt;pytest&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://beautiful-soup-4.readthedocs.io/en/latest/&#34;&gt;Beautiful Soup&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.pyinvoke.org/&#34;&gt;pyinvoke - Invoke!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Rsync&#34;&gt;rsync&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://archive.org/&#34;&gt;Internet Archive : archive.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://rich.readthedocs.io/en/stable/introduction.html&#34;&gt;Rich&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://statamic.com/&#34;&gt;Statamic&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://jamstack.org/&#34;&gt;jamstack.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.slideshare.net/genehackdotorg/a-static-site-generator-should-be-your-next-language-learning-project&#34;&gt;A static site generator should be your next language learning project&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Brian Wisti&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 190 - Testing PyPy - Carl Friedrich Bolz-Tereick</title>
      <link>https://pythontest.com/testandcode/episodes/190-testing-pypy-carl-friedrich-bolz-tereick/</link>
      <pubDate>Tue, 21 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/190-testing-pypy-carl-friedrich-bolz-tereick/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/190.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;PyPy is a fast, compliant alternative implementation of Python.&lt;br&gt; cPython is implemented in C.&lt;/p&gt;&lt;p&gt; PyPy is implemented in Python.&lt;br&gt; What does that mean?&lt;/p&gt;&lt;p&gt; And how do you test something as huge as an alternative implementation of Python?&lt;/p&gt;&lt;p&gt;Special Guest: Carl Friedrich Bolz-Tereick.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://www.pypy.org/&#34;&gt;PyPy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.pypy.org/posts/2022/04/how-is-pypy-tested.html&#34;&gt;How is PyPy Tested? &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://speed.pypy.org/&#34;&gt;PyPy Speed&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://speed.python.org/&#34;&gt;Python Speed Center&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; CF Bolz-Tereick&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 189 - attrs and dataclasses - Hynek Schlawack</title>
      <link>https://pythontest.com/testandcode/episodes/189-attrs-and-dataclasses-hynek-schlawack/</link>
      <pubDate>Tue, 07 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/189-attrs-and-dataclasses-hynek-schlawack/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/189.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In Python, before dataclasses, we had attrs.&lt;br&gt; Before attrs, it wasn&#39;t pretty.&lt;/p&gt;&lt;p&gt;The story of attrs and dataclasses is actually intertwined. &lt;br&gt; They&#39;ve built on each other.&lt;br&gt; And in the middle of it all, Hynek.&lt;/p&gt;&lt;p&gt;Hynek joins the show today to discuss some history of attrs and dataclasses, and some differences.&lt;/p&gt;&lt;p&gt;If you ever need to create a custom class in Python, you should listen to this episode.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 188 - Python&#39;s Rich, Textual, and Textualize - Innovating the CLI</title>
      <link>https://pythontest.com/testandcode/episodes/188-pythons-rich-textual-and-textualize-innovating-the-cli/</link>
      <pubDate>Tue, 17 May 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/188-pythons-rich-textual-and-textualize-innovating-the-cli/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/188.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Will McGugan has brought a lot of color to CLIs within Python due to Rich. &lt;br&gt; Then Textual started rethinking full command line applications, including layout with CSS.&lt;br&gt; And now Textualize, a new startup, is bringing CLI apps to the web.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/Textualize/rich&#34;&gt;rich&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/Textualize/rich-cli&#34;&gt;rich-cli&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/Textualize/textual&#34;&gt;textual&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.textualize.io/&#34;&gt;Textualize.io&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.textualize.io/rich/gallery&#34;&gt;Rich Gallery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.textualize.io/textual/gallery&#34;&gt;Textualize Gallery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pythonbytes.fm/&#34;&gt;Python Bytes Podcast&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Will McGugan&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 187 - Teaching Web Development, including Front End Testing</title>
      <link>https://pythontest.com/testandcode/episodes/187-teaching-web-development-including-front-end-testing/</link>
      <pubDate>Fri, 13 May 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/187-teaching-web-development-including-front-end-testing/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/187.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;When you are teaching someone web development skills, when is the right time to start teaching code quality and testing practices?&lt;/p&gt;&lt;p&gt;Karl Stolley believes it&#39;s never too early. Let&#39;s hear how he incorporates code quality in his courses.&lt;/p&gt;&lt;p&gt;Our discussion includes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;starting people off with good dev practices and tools&lt;/li&gt;&lt;li&gt;linting&lt;/li&gt;&lt;li&gt;html and css validation&lt;/li&gt;&lt;li&gt;visual regression testing&lt;/li&gt;&lt;li&gt;using local dev servers, including https&lt;/li&gt;&lt;li&gt;incorporating testing with git hooks&lt;/li&gt;&lt;li&gt;testing to aid in css optimization and refactoring&lt;/li&gt;&lt;li&gt;Backstop&lt;/li&gt;&lt;li&gt;Nightwatch&lt;/li&gt;&lt;li&gt;BrowserStack&lt;/li&gt;&lt;li&gt;the tree legged stool of learning and progressing as a developer: testing, version control, and documentation&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Karl is also writing a book on WebRTC, so we jump into that a bit too.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 186 - Developer and Team Productivity</title>
      <link>https://pythontest.com/testandcode/episodes/186-developer-and-team-productivity/</link>
      <pubDate>Thu, 12 May 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/186-developer-and-team-productivity/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/186.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Being productive is obviously a good thing.&lt;br&gt; Can we measure it?&lt;br&gt; Should we measure it?&lt;br&gt; There&#39;s been failed attempts, like lines of code, etc. in the past.&lt;br&gt; Currently, there are new tools to measure productivity, like using git metrics.&lt;/p&gt;&lt;p&gt;Nick Hodges joins the show to discuss the good and the bad of developer and team productivity, including how we can improve productivity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 185 - Python &#43; Django &#43; Rich &#43; Testing == Awesome</title>
      <link>https://pythontest.com/testandcode/episodes/185-python-django-rich-testing-awesome/</link>
      <pubDate>Wed, 11 May 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/185-python-django-rich-testing-awesome/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/185.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Django has a handful of console commands to help manage and develop sites. &lt;br&gt; &lt;a href=&#34;https://pypi.org/project/django-rich/&#34;&gt;django-rich&lt;/a&gt; adds color and nice formatting. Super cool.&lt;br&gt; In a recent release, django-rich also adds nice colorized tracebacks to the Django test runner. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pypi.org/project/django-rich/&#34;&gt;django-rich · PyPI&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode/181&#34;&gt;episode 181: Boost Your Django DX - Adam Johnson&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://django-crispy-forms.readthedocs.io/en/latest/&#34;&gt;django-crispy-forms&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.jetbrains.com/lp/python-developers-survey-2020/&#34;&gt;Python Developers Survey 2020 Results &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Adam Johnson, David Smith&lt;/p&gt;</description>
    </item>
    <item>
      <title>Current Git CLI workflow</title>
      <link>https://pythontest.com/git-cli-workflow/</link>
      <pubDate>Wed, 13 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/git-cli-workflow/</guid>
      <description>&lt;h2 id=&#34;workflow&#34;&gt;Workflow&lt;/h2&gt;&#xA;&lt;p&gt;Most of my interactions with git CLI, especially for quick changes, is:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git checkout main&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git pull&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git checkout -b okken_something&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt; code changes &amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git commit -a -m &lt;span class=&#34;s1&#34;&gt;&amp;#39;quick message&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git push&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then the code review and merge happen on the server.&lt;/p&gt;&#xA;&lt;h2 id=&#34;commands&#34;&gt;Commands&lt;/h2&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s break that down.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;git checkout main&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Start at the main branch.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;git pull&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Grab any changes from remote repo.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;git checkout -b okken_something&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Create and switch to a new branch to start work.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;git commit -a -m &#39;quick message&#39;&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Commit changes.&lt;/li&gt;&#xA;&lt;li&gt;The &lt;code&gt;-a&lt;/code&gt; automatically &amp;ldquo;adds&amp;rdquo; changed and deleted files, but not untracked files.&lt;/li&gt;&#xA;&lt;li&gt;See &lt;a href=&#34;https://git-scm.com/docs/git-commit#Documentation/git-commit.txt--a&#34;&gt;commit -a&lt;/a&gt; docs.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;git push&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Push to the remote repo.&lt;/li&gt;&#xA;&lt;li&gt;Normally this would show an error that the branch name doesn&amp;rsquo;t exist on the remote.&lt;/li&gt;&#xA;&lt;li&gt;However, I have a config setting that automatically creates a branch on remote.&lt;/li&gt;&#xA;&lt;li&gt;config setting: &lt;code&gt;git config --global push.default current&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;See &lt;a href=&#34;https://git-scm.com/docs/git-config#Documentation/git-config.txt-pushdefault&#34;&gt;push.default&lt;/a&gt; docs.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;with-autocorrect&#34;&gt;With Autocorrect&lt;/h2&gt;&#xA;&lt;p&gt;Even if I mistype a command, it will work:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 184 - Twisted and Testing Event Driven / Asynchronous Applications - Glyph</title>
      <link>https://pythontest.com/testandcode/episodes/184-twisted-and-testing-event-driven-asynchronous-applications-glyph/</link>
      <pubDate>Mon, 21 Mar 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/184-twisted-and-testing-event-driven-asynchronous-applications-glyph/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/184.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Twisted has been supporting asynchronous / event driven applications way before asyncio. Twisted, and Glyph, have also been encouraging automated tests for a very long time.&lt;/p&gt;&lt;p&gt;Twisted uses a technique that should be usable by other applications, even those using asyncio or other event driven architectures.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pyfound.blogspot.com/2017/08/the-ethical-maintainer-community.html&#34;&gt;Community Service Award Recipient Glyph Lefkowitz&lt;/a&gt; — The PSF article I was referring to early in the episode &lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://twistedmatrix.com/&#34;&gt;Twisted&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/twisted/klein&#34;&gt;twisted/klein&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/twisted/treq&#34;&gt;twisted/treq&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/django/daphne&#34;&gt;django/daphne&lt;/a&gt; — Django Channels HTTP/WebSocket server&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://scrapy.org/&#34;&gt;Scrapy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=o7GR7cG7xJ0&#34;&gt;So Easy You Can Even Do It in JavaScript: Event-Driven Architecture for Regular Programmers - YouTube&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://blog.twitter.com/engineering/en_us/topics/insights/2017/the-testing-renaissance&#34;&gt;Feature test - twitter engineering&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/pytest-book/&#34;&gt;Python Testing with pytest&lt;/a&gt; — Some reading for Glyph if he wants to learn to love pytest&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pypi.org/project/pytest-twisted/&#34;&gt;pytest-twisted&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pygame/pygame&#34;&gt;pygame&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pyodide.org/en/stable/&#34;&gt;Pyodide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://brython.info/&#34;&gt;Brython&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 183 - Managing Software Teams - Ryan Cheley</title>
      <link>https://pythontest.com/testandcode/episodes/183-managing-software-teams-ryan-cheley/</link>
      <pubDate>Wed, 16 Mar 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/183-managing-software-teams-ryan-cheley/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/183.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Ryan Cheley joins me today to talk about some challenges of managing software teams, and how to handle them.&lt;br&gt; We end up talking about a lot of skills that are excellent for software engineers as well as managers.&lt;/p&gt;&lt;p&gt;Some topics discussed:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;handling code reviews&lt;/li&gt;&lt;li&gt;asking good questions&lt;/li&gt;&lt;li&gt;being honest about what you can&#39;t do with current resources and data&lt;/li&gt;&lt;li&gt;discussing tradeoffs and offering solutions that can be completed faster than the ideal solution&lt;/li&gt;&lt;li&gt;balancing engineering and managing&lt;/li&gt;&lt;li&gt;making sure documentation happens&lt;/li&gt;&lt;li&gt;remote teams &lt;ul&gt;&lt;li&gt;encouraging collaboration&lt;/li&gt;&lt;li&gt;encouraging non-work-related conversations&lt;/li&gt;&lt;li&gt;watching out for overworking&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 182 - An Unorthodox Technical Interview and Hiring Process - Nathan Aschbacher</title>
      <link>https://pythontest.com/testandcode/episodes/182-an-unorthodox-technical-interview-and-hiring-process-nathan-aschbacher/</link>
      <pubDate>Tue, 08 Mar 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/182-an-unorthodox-technical-interview-and-hiring-process-nathan-aschbacher/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/182.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Don&#39;t you just love technical interviews, with someone who just saw your resume or CV 5 minutes ago asking you to write some code on a whiteboard. Probably code that has nothing to do with anything you&#39;ve done before or anything you will do at the company.&lt;/p&gt;&lt;p&gt;No? Neither does Nathan Aschbacher. &lt;br&gt; So when he started building the team at his company, he decided to do things differently.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 181 - Boost Your Django DX - Adam Johnson</title>
      <link>https://pythontest.com/testandcode/episodes/181-boost-your-django-dx-adam-johnson/</link>
      <pubDate>Mon, 28 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/181-boost-your-django-dx-adam-johnson/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/181.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;We talk with Adam Johnson about his new book, &#34;Boost Your Django DX&#34;. &lt;/p&gt;&lt;p&gt;Developer experience includes tools and practices to make developers more effective and efficient, and just plain make software development more fun and satisfying. &lt;br&gt; One of the things I love about this book is that it&#39;s not just for Django devs. &lt;br&gt; I&#39;d guess that about half the book is about topics that all Python developers would find useful, from virtual environments to linters to testing. &lt;br&gt; But of course, also tons of tips and tools for working with Django.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 180 - Lean TDD</title>
      <link>https://pythontest.com/testandcode/episodes/180-lean-tdd/</link>
      <pubDate>Mon, 21 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/180-lean-tdd/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/180.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Lean TDD is an attempt to reconcile some conflicting aspects of Test Driven Development and Lean Software Development.&lt;/p&gt;&lt;p&gt;I&#39;ve mentioned Lean TDD on the podcast a few times and even tried to do a quick outline at the end of &lt;a href=&#34;https://pythontest.com/testandcode/162&#34;&gt;episode 162&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;This episode is a more complete outline, or at least a first draft.&lt;/p&gt;&lt;p&gt;If you feel you&#39;ve got a good understanding of TDD, and it&#39;s working awesome for you, that&#39;s great. Keep doing what you&#39;re doing. There are no problems.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lean TDD</title>
      <link>https://pythontest.com/posts/lean-tdd/lean-tdd-in-2022/</link>
      <pubDate>Sun, 20 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/posts/lean-tdd/lean-tdd-in-2022/</guid>
      <description>&lt;h2 id=&#34;preface&#34;&gt;Preface&lt;/h2&gt;&#xA;&lt;p&gt;Lean TDD is an attempt to reconcile some conflicting aspects of Test Driven Development and Lean Software Development.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve mentioned Lean TDD on &lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;the podcast&lt;/a&gt; a few times and even tried to do a quick outline at the end of &lt;a href=&#34;https://pythontest.com/testandcode/162&#34;&gt;episode 162&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This post is a more complete outline, or at least a first draft.&lt;/p&gt;&#xA;&lt;h2 id=&#34;in-audio-form&#34;&gt;In audio form&lt;/h2&gt;&#xA;&lt;p&gt;The initial version of this post is also available in audio form as &lt;a href=&#34;https://pythontest.com/testandcode/180&#34;&gt;Test &amp;amp; Code, episode 180&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 179 - Exploratory Testing</title>
      <link>https://pythontest.com/testandcode/episodes/179-exploratory-testing/</link>
      <pubDate>Tue, 08 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/179-exploratory-testing/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/179.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Exploratory testing is absolutely an essential part of a testing strategy.&lt;br&gt; This episode discusses what exploratory testing is, its benefits, and how it fits within a framework of relying on automated tests for most of our testing.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 178 - The Five Factors of Automated Software Testing</title>
      <link>https://pythontest.com/testandcode/episodes/178-the-five-factors-of-automated-software-testing/</link>
      <pubDate>Mon, 31 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/178-the-five-factors-of-automated-software-testing/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/178.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&#34;There are five practical reasons that we write tests. Whether we realize it or not, our personal testing philosophy is based on how we judge the relative importance of these reasons.&#34; - Sarah Mei&lt;/p&gt;&lt;p&gt;This episode discusses the factors.&lt;/p&gt;&lt;p&gt;Sarah&#39;s order:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Verify the code is working correctly&lt;/li&gt;&lt;li&gt;Prevent future regressions&lt;/li&gt;&lt;li&gt;Document the code’s behavior&lt;/li&gt;&lt;li&gt;Provide design guidance&lt;/li&gt;&lt;li&gt;Support refactoring&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Brian&#39;s order:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Verify the code is working correctly&lt;/li&gt;&lt;li&gt;Prevent future regressions&lt;/li&gt;&lt;li&gt;Support refactoring&lt;/li&gt;&lt;li&gt;Provide design guidance&lt;/li&gt;&lt;li&gt;Document the code’s behavior&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The episode includes reasons why I&#39;ve re-ordered them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 177 - Unit Test vs Integration Test and The Testing Trophy</title>
      <link>https://pythontest.com/testandcode/episodes/177-unit-test-vs-integration-test-and-the-testing-trophy/</link>
      <pubDate>Thu, 27 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/177-unit-test-vs-integration-test-and-the-testing-trophy/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/177.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A recent Twitter thread by Simon Willison reminded me that I&#39;ve been meaning to do an episode on the testing trophy.&lt;br&gt; This discussion is about the distinction between unit and integration tests, what those terms mean, and where we should spend our testing time.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://twitter.com/simonw/status/1485700771031117824&#34;&gt;Simon Willison&#39;s Twitter Thread&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://kentcdodds.com/blog/the-testing-trophy-and-testing-classifications&#34;&gt;The Testing Trophy and Testing Classifications&lt;/a&gt; — Kent C Dodds&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://kentcdodds.com/blog/write-tests&#34;&gt;Write tests. Not too many. Mostly integration.&lt;/a&gt; — Kent C Dodds&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://martinfowler.com/articles/2021-test-shapes.html&#34;&gt;On the Diverse And Fantastical Shapes of Testing&lt;/a&gt; — Martin Fowler&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 176 - SaaS Side Projects - Brandon Braner</title>
      <link>https://pythontest.com/testandcode/episodes/176-saas-side-projects/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/176-saas-side-projects/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/176.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The idea of having a software as a service product sound great, doesn&#39;t it?&lt;/p&gt;&lt;p&gt; Solve a problem with software. Have a nice looking landing page and website. Get paying customers.&lt;/p&gt;&lt;p&gt; Eventually have it make enough revenue so you can turn it into your primary source of income. &lt;/p&gt;&lt;p&gt;There&#39;s a lot of software talent out there. We could solve lots of problems. &lt;br&gt; But going from idea to product to first customer is non-trivial. &lt;br&gt; Especially as a side hustle. &lt;br&gt; This episode discusses some of the hurdles from idea to first customer. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 175 - Who Should Do QA?</title>
      <link>https://pythontest.com/testandcode/episodes/175-who-should-do-qa/</link>
      <pubDate>Wed, 12 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/175-who-should-do-qa/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/175.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ul&gt;&lt;li&gt;Who should do QA?&lt;/li&gt;&lt;li&gt;How does that change with different projects and teams?&lt;/li&gt;&lt;li&gt;What does &#34;doing QA&#34; mean, anyway?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Answering these questions are the goals of this episode.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://www.thoughtworks.com/insights/blog/test-automation-who-should-be-involved&#34;&gt;Test Automation - Who Should be Involved? | Thoughtworks&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 174 - pseudo-TDD - Paul Ganssle</title>
      <link>https://pythontest.com/testandcode/episodes/174-pseudo-tdd-paul-ganssle/</link>
      <pubDate>Wed, 22 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/174-pseudo-tdd-paul-ganssle/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/174.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In this episode, I talk with Paul Ganssle about a fun workflow that he calls pseudo-TDD.&lt;br&gt; Pseudo-TDD is a way to keep your commit history clean and your tests passing with each commit.&lt;br&gt; This workflow includes using pytest xfail and some semi-advanced version control features.&lt;/p&gt;&lt;p&gt;Some strict forms of TDD include something like this:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;write a failing test that demonstrates a lacking feature or defect&lt;/li&gt;&lt;li&gt;write the source code to get the test to pass&lt;/li&gt;&lt;li&gt;refactor if necessary&lt;/li&gt;&lt;li&gt;repeat&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In reality, at least for me, the software development process is way more messy than this, and not so smooth and linear.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 173 - Why NOT unittest?</title>
      <link>https://pythontest.com/testandcode/episodes/173-why-not-unittest/</link>
      <pubDate>Fri, 17 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/173-why-not-unittest/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/173.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In the preface of &#34;Python Testing with pytest&#34; I list some reasons to use pytest, under a section called &#34;why pytest?&#34;. Someone asked me recently, a different but related question &#34;why NOT unittest?&#34;.&lt;/p&gt;&lt;p&gt;unittest is an xUnit style framework. For me, xUnit style frameworks are fatally flawed for software testing.&lt;/p&gt;&lt;p&gt;That&#39;s what this episode is about, my opinion of &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 172 - Designing Better Software with a Prototype Mindset</title>
      <link>https://pythontest.com/testandcode/episodes/172-designing-better-software-with-a-prototype-mindset/</link>
      <pubDate>Tue, 30 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/172-designing-better-software-with-a-prototype-mindset/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/172.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A prototype is a a preliminary model of something, from which other forms are developed or copied.&lt;br&gt; In software, we think of prototypes as early things, or a proof of concept.&lt;br&gt; We don&#39;t often think of prototyping during daily software development or maintenance. I think we should.&lt;br&gt; This episode is about growing better designed software with the help of a prototype mindset.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 171 - How and why I use pytest&#39;s xfail - Paul Ganssle</title>
      <link>https://pythontest.com/testandcode/episodes/171-how-and-why-i-use-pytests-xfail-paul-ganssle/</link>
      <pubDate>Mon, 22 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/171-how-and-why-i-use-pytests-xfail-paul-ganssle/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/171.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Paul Ganssle, is a software developer at Google, core Python dev, and open source maintainer for many projects, has some thoughts about pytest&#39;s xfail.&lt;br&gt; He was an early skeptic of using xfail, and is now an proponent of the feature.&lt;br&gt; In this episode, we talk about some open source workflows that are possible because of xfail. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Special Guest: Paul Ganssle.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 170 - pytest for Data Science and Machine Learning - Prayson Daniel</title>
      <link>https://pythontest.com/testandcode/episodes/170-pytest-for-data-science-and-machine-learning-prayson-daniel/</link>
      <pubDate>Wed, 17 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/170-pytest-for-data-science-and-machine-learning-prayson-daniel/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/170.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Prayson Daniel, a principle data scientist, discusses testing machine learning pipelines with pytest.&lt;/p&gt;&lt;p&gt;Prayson is using pytest for some pretty cool stuff, including:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;unit tests, of course&lt;/li&gt;&lt;li&gt;testing pipeline stages&lt;/li&gt;&lt;li&gt;counterfactual testing&lt;/li&gt;&lt;li&gt;performance testing&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All with pytest. So cool.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Special Guest: Prayson Daniel.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pythonbytes.fm/episodes/show/250/skorch-your-scikit-learn-together-with-pytorch&#34;&gt;Python Bytes 250, with Prayson Daniel&lt;/a&gt; — Listen to this for more of an introduction to Prayson&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 169 - Service and Microservice Performance Monitoring - Omri Sass</title>
      <link>https://pythontest.com/testandcode/episodes/169-service-and-microservice-performance-monitoring-omri-sass/</link>
      <pubDate>Thu, 11 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/169-service-and-microservice-performance-monitoring-omri-sass/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/169.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Performance monitoring and error detection is just as important with services and microservices as with any system, but with added complexity. Omri Sass joins the show to explain telemetry and monitoring of services and of systems with services. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Special Guest: Omri Sass.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 168 - Understanding Complex Code by Refactoring into Larger Functions</title>
      <link>https://pythontest.com/testandcode/episodes/168-understanding-complex-code-by-refactoring-into-larger-functions/</link>
      <pubDate>Tue, 02 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/168-understanding-complex-code-by-refactoring-into-larger-functions/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/168.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;To understand complex code, it can be helpful to remove abstractions, even if it results in larger functions. This episode walks through a process I use to refactor code that I need to debug and fix, but don&#39;t completely understand.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 167 - React, TypeScript, and the Joy of Testing - Paul Everitt</title>
      <link>https://pythontest.com/testandcode/episodes/167-react-typescript-and-the-joy-of-testing-paul-everitt/</link>
      <pubDate>Thu, 21 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/167-react-typescript-and-the-joy-of-testing-paul-everitt/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/167.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Paul has a tutorial on testing and TDD with React and TypeScript. &lt;br&gt; We discuss workflow and the differences, similarities between testing with React/TypeScript and Python.&lt;br&gt; We also discuss what lessons that we can bring from front end testing to Python testing.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Special Guest: Paul Everitt.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://www.jetbrains.com/webstorm/guide/tutorials/react_typescript_tdd/&#34;&gt;React, TypeScript, and TDD&lt;/a&gt; — Paul Everitt&#39;s tutorial&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://testing-library.com/docs/react-testing-library/intro/&#34;&gt;React Testing Library&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 166 - unittest expectedFailure and xfail</title>
      <link>https://pythontest.com/testandcode/episodes/166-unittest-expectedfailure-and-xfail/</link>
      <pubDate>Thu, 14 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/166-unittest-expectedfailure-and-xfail/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/166.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;xfail isn&#39;t just for pytest tests. Python&#39;s unittest has @unittest.expectedFailure.&lt;/p&gt;&lt;p&gt;In this episode, we cover:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;using @unittest.expectedFailure&lt;/li&gt;&lt;li&gt;the results of passing and failing tests with expectedFailure&lt;/li&gt;&lt;li&gt;using pytest as a test runner for unittest&lt;/li&gt;&lt;li&gt;using pytest markers on unittest tests&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Docs for expectedFailure: &lt;br&gt; &lt;a href=&#34;https://docs.python.org/3/library/unittest.html#skipping-tests-and-expected-failures&#34;&gt;https://docs.python.org/3/library/unittest.html#skipping-tests-and-expected-failures&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Some sample code. &lt;br&gt; unittest only:&lt;/p&gt;import unittest&#xA;&lt;p&gt;class ExpectedFailureTestCase(unittest.TestCase):&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;@unittest.expectedFailure&#xA;def test_fail(self):&#xA;    self.assertEqual(1, 0, &amp;quot;broken&amp;quot;)&#xA;&#xA;@unittest.expectedFailure&#xA;def test_pass(self):&#xA;    self.assertEqual(1, 1, &amp;quot;not broken&amp;quot;)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;br&gt;&lt;p&gt;unittest with pytest markers:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 165 - pytest xfail policy and workflow</title>
      <link>https://pythontest.com/testandcode/episodes/165-pytest-xfail-policy-and-workflow/</link>
      <pubDate>Thu, 07 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/165-pytest-xfail-policy-and-workflow/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/165.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A discussion of how to use the xfail feature of pytest to help with communication on software projects.&lt;/p&gt;&lt;p&gt;The episode covers:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;What is xfail&lt;/li&gt;&lt;li&gt;Why I use it&lt;/li&gt;&lt;li&gt;Using reason effectively by including issue tracking numbers&lt;/li&gt;&lt;li&gt;Using xfail_strict&lt;/li&gt;&lt;li&gt;Adding --runxfail when transitioning from development to feature freeze&lt;/li&gt;&lt;li&gt;What to do about test failures&lt;/li&gt;&lt;li&gt;How all of this might help with team communication&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 164 - Debugging Python Test Failures with pytest</title>
      <link>https://pythontest.com/testandcode/episodes/164-debugging-python-test-failures-with-pytest/</link>
      <pubDate>Tue, 14 Sep 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/164-debugging-python-test-failures-with-pytest/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/164.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;An overview of the pytest flags that help with debugging.&lt;br&gt; From Chapter 13, Debugging Test Failures, of &lt;a href=&#34;https://pythontest.com/pytest-book/&#34;&gt;Python Testing with pytest, 2nd edition&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;pytest includes quite a few command-line flags that are useful for debugging. &lt;/p&gt;&lt;p&gt;We talk about thes flags in this episode.&lt;/p&gt;&lt;p&gt;Flags for selecting which tests to run, in which order, and when to stop:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;-lf / --last-failed: Runs just the tests that failed last.&lt;/li&gt;&lt;li&gt;-ff / --failed-failed: Runs all the tests, starting with the last failed.&lt;/li&gt;&lt;li&gt;-x / --exitfirst: Stops the tests session afterEd: after?Author: yep the first failure.&lt;/li&gt;&lt;li&gt;--maxfail=num: Stops the tests after num failures.&lt;/li&gt;&lt;li&gt;-nf / --new-first: Runs all the tests, ordered by file modification time.&lt;/li&gt;&lt;li&gt;--sw / --stepwise: Stops the tests at the first failure. Starts the tests at the last failure next time.&lt;/li&gt;&lt;li&gt;--sw-skip / --stepwise-skip: Same as --sw, but skips the first failure.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Flags to control pytest output:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 163 - pip install ./local_directory - Stéphane Bidoul</title>
      <link>https://pythontest.com/testandcode/episodes/163-pip-install-local_directory-stephane-bidoul/</link>
      <pubDate>Fri, 20 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/163-pip-install-local_directory-stephane-bidoul/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/163.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pip : &#34;pip installs packages&#34; or maybe &#34;Package Installer for Python&#34;&lt;br&gt; pip is an invaluable tool when developing with Python.&lt;br&gt; A lot of people know pip as a way to install third party packages from pypi.org&lt;br&gt; You can also use pip to install from other indexes (or is it indices?)&lt;/p&gt;&lt;p&gt;You can also use pip to install a package in a local directory.&lt;br&gt; That&#39;s the part I want to jump in and explore with Stéphane Bidoul.&lt;br&gt; The way pip installs from a local directory is about to change, and the story is fascinating.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 162 - Flavors of TDD</title>
      <link>https://pythontest.com/testandcode/episodes/162-flavors-of-tdd/</link>
      <pubDate>Tue, 03 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/162-flavors-of-tdd/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/162.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;What flavor of TDD do you practice? &lt;/p&gt;&lt;p&gt;In this episode we talk about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Classical vs Mockist TDD&lt;/li&gt;&lt;li&gt;Detroit vs London (I actually refer to it in the episode as Chicago instead of Detroit. Oh well.)&lt;/li&gt;&lt;li&gt;Static vs Behavior&lt;/li&gt;&lt;li&gt;Inside Out vs Outside In&lt;/li&gt;&lt;li&gt;Double Loop TDD&lt;/li&gt;&lt;li&gt;BDD&lt;/li&gt;&lt;li&gt;FDD&lt;/li&gt;&lt;li&gt;Tracer Bullets&lt;/li&gt;&lt;li&gt;Rules of TDD&lt;/li&gt;&lt;li&gt;Team Structure&lt;/li&gt;&lt;li&gt;Lean TDD &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This is definitely an episode I&#39;d like feedback on. Reach out to me for further questions or if I missed some crucial variant of TDD that you know and love.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 161 - Waste in Software Development</title>
      <link>https://pythontest.com/testandcode/episodes/161-waste-in-software-development/</link>
      <pubDate>Tue, 20 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/161-waste-in-software-development/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/161.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Software development processes create value, and have waste, in the Lean sense of the word waste.&lt;br&gt; Lean manufacturing and lean software development changed the way we look at value and waste.&lt;br&gt; This episode looks at lean definitions of waste, so we can see it clearly when we encounter it.&lt;/p&gt;&lt;p&gt;I&#39;m going to use the term waste and value in future episodes. I&#39;m using waste in a Lean sense, so we can look at software processes critically, see the value chain, and try to reduce waste.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 160 - DRY, WET, DAMP, AHA, and removing duplication from production code and test code</title>
      <link>https://pythontest.com/testandcode/episodes/160-dry-wet-damp-aha-and-removing-duplication-from-production-code-and-test-code/</link>
      <pubDate>Thu, 08 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/160-dry-wet-damp-aha-and-removing-duplication-from-production-code-and-test-code/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/160.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Should your code be DRY or DAMP or something completely different?&lt;br&gt; How about your test code? Do different rules apply?&lt;br&gt; Wait, what do all of these acronyms mean?&lt;/p&gt;&lt;p&gt;We&#39;ll get to all of these definitions, and then talk about how it applies to both production code and test code in this episode. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/&#34;&gt;The Pragmatic Programmer, 20th Anniversary Edition&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Don%27t_repeat_yourself&#34;&gt;Don&#39;t repeat yourself - Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=djV11Xbc914&#34;&gt;a-ha - Take On Me&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Rule_of_three_(computer_programming)&#34;&gt;Rule of three - Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/6453235/what-does-damp-not-dry-mean-when-talking-about-unit-tests&#34;&gt;What does “DAMP not DRY” mean when talking about unit tests? - Stack Overflow&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 159 - Python, pandas, and Twitter Analytics - Matt Harrison</title>
      <link>https://pythontest.com/testandcode/episodes/159-python-pandas-and-twitter-analytics-matt-harrison/</link>
      <pubDate>Fri, 02 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/159-python-pandas-and-twitter-analytics-matt-harrison/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/159.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;When learning data science and machine learning techniques, you need to work on a data set.&lt;br&gt; Matt Harrison had a great idea: Why not use your own Twitter analytics data?&lt;br&gt; So, he did that with his own data, and shares what he learned in this episode, including some of his secrets to gaining followers.&lt;/p&gt;&lt;p&gt;In this episode we talk about:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 158 - TDD in Swift - Gio Lodi</title>
      <link>https://pythontest.com/testandcode/episodes/158-tdd-in-swift-gio/</link>
      <pubDate>Fri, 18 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/158-tdd-in-swift-gio/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/158.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Iterative processes that include writing test code and production code together, such as TDD, help make coding fun. &lt;/p&gt;&lt;p&gt;All of us that care about developing quality code with the help of testing can learn from each other, regardless of programming language.&lt;/p&gt;&lt;p&gt;Today we step outside our normal Python comfort zone and talk with Gio about TDD in Swift.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 157 - pre-commit - Anthony Sottile</title>
      <link>https://pythontest.com/testandcode/episodes/157-pre-commit-anthony-sottile/</link>
      <pubDate>Fri, 11 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/157-pre-commit-anthony-sottile/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/157.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pre-commit started as a framework for running linters and code formatters during git actions via git hooks. It&#39;s grown and expanded and now supports an extensive list of languages and actions and manual running of actions. But even at it&#39;s core, it&#39;s great for letting computers nitpick about whitespace and formatting, so that code reviews can focus on architecture and design.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pinning Application Dependencies with pip-tools compile</title>
      <link>https://pythontest.com/python/pinning-applications-with-piptools-compile/</link>
      <pubDate>Wed, 09 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/python/pinning-applications-with-piptools-compile/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/jazzband/pip-tools&#34;&gt;pip-tools&lt;/a&gt; has more functionality than this, but compile alone is quite useful.&lt;/p&gt;&#xA;&lt;p&gt;Start with a loose list of dependencies in &lt;code&gt;requirements.in&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;typer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rich&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;requirements.in&lt;/code&gt; file can have things like &lt;code&gt;&amp;gt;=&lt;/code&gt; and such if you have some restrictions on your dependencies.&lt;/p&gt;&#xA;&lt;p&gt;Now install &lt;code&gt;pip-tools&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install pip-tools&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then, in create a &lt;code&gt;requirements.txt&lt;/code&gt; file with &lt;code&gt;compile&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip-compile requirements.in&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m piptools compile requirements.in&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The output will be shown on stdout, but also in &lt;code&gt;requirements.txt&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 156 - Flake8 - Python linting framework with Pyflakes, pycodestyle, McCabe, and more - Anthony Sottile</title>
      <link>https://pythontest.com/testandcode/episodes/156-flake8-python-linting-framework-with-pyflakes-pycodestyle-mccabe-and-more-anthony-sottile/</link>
      <pubDate>Thu, 03 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/156-flake8-python-linting-framework-with-pyflakes-pycodestyle-mccabe-and-more-anthony-sottile/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/156.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Flake8 is a command-line tool for linting Python projects. &lt;br&gt; By default, it includes lint checks provided Pyflakes, pycodestyle, and McCabe&lt;br&gt; It&#39;s also a platform, and allows plugins to extend the checks.&lt;br&gt; Flake8 will run third-party extensions if they are found and installed.&lt;/p&gt;&lt;p&gt;But what does all of that mean?&lt;/p&gt;&lt;p&gt;Anthony Sottile is a maintainer of flake8 and has kindly offered to explain it to us.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 155 - Four Questions to Ask Frequently During Software Projects - Tim Ottinger</title>
      <link>https://pythontest.com/testandcode/episodes/155-four-questions-to-ask-frequently-during-software-projects-tim-ottinger/</link>
      <pubDate>Fri, 28 May 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/155-four-questions-to-ask-frequently-during-software-projects-tim-ottinger/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/155.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Tim Ottinger has four questions that work great in many situations, from doing homework, to cooking, to writing code, to entire software projects.&lt;/p&gt;&lt;p&gt;They are actually awesome questions to ask during a software project.&lt;/p&gt;&lt;p&gt;We discuss the questions, where they came from, and look at some uses in software.&lt;/p&gt;&lt;p&gt;The questions:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;What is it that needs to be done?&lt;/li&gt;&lt;li&gt;What do we need in order to do it?&lt;/li&gt;&lt;li&gt;Where can we get what we need?&lt;/li&gt;&lt;li&gt;How can we tell if we’re doing it right?&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Bonus question that can be swapped out for #1:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 154 - Don&#39;t Mock your Database - Jeff Triplett</title>
      <link>https://pythontest.com/testandcode/episodes/154-dont-mock-your-database-jeff-triplett/</link>
      <pubDate>Fri, 21 May 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/154-dont-mock-your-database-jeff-triplett/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/154.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;You need tests for your web app. And it has a database. What do you do with the database during testing? Should you use the real thing? or mock it? Jeff Triplett says don&#39;t mock it.&lt;/p&gt;&lt;p&gt;In this episode, we talk with Jeff about testing web applications, specifically Django apps, and of course talk about the downsides of database mocking.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 153 - Playwright for Python - end to end testing of web apps - Ryan Howard</title>
      <link>https://pythontest.com/testandcode/episodes/153-playwright-for-python-end-to-end-testing-of-web-apps-ryan-howard/</link>
      <pubDate>Thu, 13 May 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/153-playwright-for-python-end-to-end-testing-of-web-apps-ryan-howard/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/153.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Playwright is an end to end automated testing framework for web apps with Python support and even a pytest plugin.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://playwright.dev/python/&#34;&gt;Playwright for Python&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://playwright.dev/python/docs/why-playwright/&#34;&gt;Why Playwright?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/microsoft/playwright-pytest&#34;&gt;playwright-pytest&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 152 - Python Packaging - Brett Cannon</title>
      <link>https://pythontest.com/testandcode/episodes/152-python-packaging-brett-cannon/</link>
      <pubDate>Thu, 06 May 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/152-python-packaging-brett-cannon/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/152.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I always learn a lot when I talk to Brett, and this episode is no exception.&lt;br&gt; We talk about the packaging workflow, tools, changes, pyproject.toml, flit, setuptools, and so much more.&lt;br&gt; I hope you learn as much as I did in this great discussion.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pypi.org/project/pytest-srcpaths/&#34;&gt;pytest-srcpaths&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://packaging.python.org/&#34;&gt;Python Packaging User Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pypa/packaging&#34;&gt;pypa/packaging: Core utilities for Python packages&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://flit.readthedocs.io/en/latest/pyproject_toml.html#metadata-section&#34;&gt;flit and requires-python&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://docs.python.org/3/extending/index.html&#34;&gt;Extending and Embedding the Python Interpreter — Python 3.9.2 documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://flit.readthedocs.io/en/latest/&#34;&gt;Flit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://setuptools.readthedocs.io/en/latest/build_meta.html&#34;&gt;setuptools&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.python.org/dev/peps/pep-0518/&#34;&gt;PEP 518 -- Specifying Minimum Build System Requirements for Python Projects | Python.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.python.org/dev/peps/pep-0517/&#34;&gt;PEP 517 -- A build-system independent format for source trees | Python.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://flit.readthedocs.io/en/latest/cmdline.html#flit-install&#34;&gt;Flit editable installs with --symlink or --pth-file&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.python.org/dev/peps/pep-0440/&#34;&gt;PEP 440 -- Version Identification and Dependency Specification | Python.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://flit.readthedocs.io/en/latest/flit_ini.html?highlight=requires-python#metadata-section&#34;&gt;Specifying requires-python with flit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://wheel.readthedocs.io/en/stable/&#34;&gt;wheel&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Universal_binary&#34;&gt;Universal 1 binary&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Universal_binary#Universal_2&#34;&gt;Universal 2 binary&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://cython.org/&#34;&gt;Cython: C-Extensions for Python&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://cffi.readthedocs.io/en/latest/&#34;&gt;CFFI&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pybind/pybind11&#34;&gt;pybind11: Seamless operability between C++11 and Python&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://conda.io/projects/conda/en/latest/index.html&#34;&gt;Conda&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html&#34;&gt;conda environments&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://conda-forge.org/&#34;&gt;conda-forge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://wiki.python.org/moin/VaultsOfParnassus&#34;&gt;VaultsOfParnassus&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 151 - Python Adventure - Brandon Rhodes</title>
      <link>https://pythontest.com/testandcode/episodes/151-python-adventure-brandon-rhodes/</link>
      <pubDate>Tue, 27 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/151-python-adventure-brandon-rhodes/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/151.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Adventure, or Colossal Cave Adventure, was written between 1975 and 1977 in Fortran. Brandon Rhodes ported it to Python 3, initial release in 2011, and still maintains it. We talk to Brandon about this wonderful game.&lt;/p&gt;YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK BUILDING.&#xA;AROUND YOU IS A FOREST.  A SMALL STREAM FLOWS OUT OF THE BUILDING AND&#xA;DOWN A GULLY.&#xA;&lt;blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;east&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 150 - A Practical Testing Strategy</title>
      <link>https://pythontest.com/testandcode/episodes/150-a-practical-testing-strategy/</link>
      <pubDate>Thu, 15 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/150-a-practical-testing-strategy/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/150.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Coming up with a testing strategy doesn&#39;t have to be stressful. Prioritizing features to test, and generating test cases for each feature can be fairly quick and painless. This episode covers a strategy for both that can be applied to many types of software.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 149 - I don&#39;t test my code, &#34;crappy Python&#34; is all I write - Corey Quinn</title>
      <link>https://pythontest.com/testandcode/episodes/149-i-dont-test-my-code-crappy-python-is-all-i-write-corey-quinn/</link>
      <pubDate>Tue, 30 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/149-i-dont-test-my-code-crappy-python-is-all-i-write-corey-quinn/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/149.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Corey Quinn is the Chief Cloud Economist at The Duckbill Group. He&#39;s also a podcaster and writes a newsletter. And he also automates things with Python. But he doesn&#39;t write tests. Let&#39;s find out why.&lt;/p&gt;&lt;p&gt;Reason for the interview. Rough summary of a twitter conversation:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Corey: What podcasts should I try to get an invite onto?&lt;/li&gt;&lt;li&gt;ToonArmyCaptain: Python Bytes, Test &amp; Code, Talk Python&lt;/li&gt;&lt;li&gt;Corey: But... I don&#39;t test my code, &#34;crappy Python&#34; is all I write, and I&#39;d feel like a giant imposter. So yeah, I&#39;d be game. &lt;a href=&#34;https://twitter.com/QuinnyPig/status/1354093298890141697?s=20&#34;&gt;link&lt;/a&gt;&lt;/li&gt;&lt;li&gt;So here we are. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This diagram is referenced in the show, the &lt;a href=&#34;https://files.fireside.fm/file/fireside-uploads/images/b/bc7f1faf-8aad-4135-bb12-83a8af679756/FXJsYzOQ.jpg&#34;&gt;Last Week In AWS Newsletter Production Pipeline&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 148 - Coverage.py and testing packages</title>
      <link>https://pythontest.com/testandcode/episodes/148-coverage-py-and-testing-packages/</link>
      <pubDate>Fri, 12 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/148-coverage-py-and-testing-packages/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/148.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;How do you test installed packages using coverage.py? &lt;/p&gt;&lt;p&gt;Also, a couple followups from last week&#39;s episode on using coverage for single file applications. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode/147&#34;&gt;episode 147: Testing Single File Python Applications/Scripts with pytest and coverage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://coverage.readthedocs.io/en/coverage-5.5/source.html&#34;&gt;Specifying source files — Coverage.py documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://hynek.me/articles/testing-packaging/&#34;&gt;Testing &amp; Packaging - Hynek&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://beyondgrep.com/&#34;&gt;ack&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 147 - Testing Single File Python Applications/Scripts with pytest and coverage</title>
      <link>https://pythontest.com/testandcode/episodes/147-testing-single-file-python-applications-scripts-with-pytest-and-coverage/</link>
      <pubDate>Fri, 05 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/147-testing-single-file-python-applications-scripts-with-pytest-and-coverage/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/147.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Have you ever written a single file Python application or script?&lt;br&gt; Have you written tests for it?&lt;br&gt; Do you check code coverage?&lt;/p&gt;&lt;p&gt;This is the topic of this weeks episode, spurred on by a listener question.&lt;/p&gt;&lt;p&gt;The questions:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;For single file scripts, I&#39;d like to have the test code included right there in the file. Can I do that with pytest?&lt;/li&gt;&lt;li&gt;If I can, can I use code coverage on it?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The example code discussed in the episode: script.py&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 146 - Automation Tools for Web App and API Development and Maintenance - Michael Kennedy</title>
      <link>https://pythontest.com/testandcode/episodes/146-automation-tools-for-web-app-and-api-development-and-maintenance-michael-kennedy/</link>
      <pubDate>Sun, 28 Feb 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/146-automation-tools-for-web-app-and-api-development-and-maintenance-michael-kennedy/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/146.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Building any software, including web apps and APIs requires testing.&lt;br&gt; There&#39;s automated testing, and there&#39;s manual testing.&lt;/p&gt;&lt;p&gt; In between that is exploratory testing aided by automation tools. &lt;/p&gt;&lt;p&gt;Michael Kennedy joins the show this week to share some of the tools he uses during development and maintenance.&lt;/p&gt;&lt;p&gt;We talk about tools used for semi-automated exploratory testing. &lt;br&gt; We also talk about some of the other tools and techniques he uses to keep Talk Python Training, Talk Python, and Python Bytes all up and running smoothly. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 145 - For Those About to Mock - Michael Foord</title>
      <link>https://pythontest.com/testandcode/episodes/145-for-those-about-to-mock-michael-foord/</link>
      <pubDate>Thu, 18 Feb 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/145-for-those-about-to-mock-michael-foord/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/145.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A discussion about mocking in Python with the original contributor of unittest.mock, Michael Foord.&lt;/p&gt;&lt;p&gt;Of course we discuss mocking and unittest.mock. &lt;/p&gt;&lt;p&gt;We also discuss:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;testing philosophy&lt;/li&gt;&lt;li&gt;unit testing and what a unit is&lt;/li&gt;&lt;li&gt;TDD&lt;/li&gt;&lt;li&gt;where Michael&#39;s towel is, and what color&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Micheal was instrumental in the building of testing tools for Python, and continues to be a pragmatic source of honest testing philosopy in a field that has a lot of contradictory information.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 144 - TDD in Science - Martin Héroux</title>
      <link>https://pythontest.com/testandcode/episodes/144-tdd-in-science-martin-heroux/</link>
      <pubDate>Fri, 12 Feb 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/144-tdd-in-science-martin-heroux/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/144.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Test Driven Development, TDD, is not easy to incorporate in your daily development. &lt;/p&gt;&lt;p&gt;Martin and Brian discuss TDD and testing and Martin&#39;s experience with testing, TDD, and using it for code involved with scientific research. &lt;/p&gt;&lt;p&gt;We discuss lots of topics around this, including:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;What is TDD?&lt;/li&gt;&lt;li&gt;Should research software be tested in order to be trusted?&lt;/li&gt;&lt;li&gt;Time pressure and the struggle to get code done quickly. How do you make time for tests also?&lt;/li&gt;&lt;li&gt;Is testing worth it for code that will not be reused?&lt;/li&gt;&lt;li&gt;Sometimes it&#39;s hard to know how to test something.&lt;/li&gt;&lt;li&gt;Maybe people should learn to test alongside learning how to code.&lt;/li&gt;&lt;li&gt;A desire for a resource of testing concepts for non-CS people.&lt;/li&gt;&lt;li&gt;Are the testing needs and testing information needs different in different disciplines? &lt;ul&gt;&lt;li&gt;Biology, Physics, Astrophysics, etc. Do they have different testing needs?&lt;/li&gt;&lt;li&gt;Do we need a &#34;how to test&#34; resource for each?&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 143 - pytest markers - Anthony Sottile</title>
      <link>https://pythontest.com/testandcode/episodes/143-pytest-markers-anthony-sottile/</link>
      <pubDate>Sun, 07 Feb 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/143-pytest-markers-anthony-sottile/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/143.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Completely nerding out about pytest markers with Anthony Sottile.&lt;/p&gt;&lt;p&gt;Some of what we talk about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Running a subset of tests with markers.&lt;/li&gt;&lt;li&gt;Using marker expressions with and, or, not, and parentheses.&lt;/li&gt;&lt;li&gt;Keyword expressions also can use and, or, not, and parentheses.&lt;/li&gt;&lt;li&gt;Markers and pytest functionality that use mark, such as parametrize, skipif, etc.&lt;/li&gt;&lt;li&gt;Accessing markers with itermarkers and get_closest_marker through item.&lt;/li&gt;&lt;li&gt;Passing values, metadata through markers to fixtures or hook functions.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Links:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 142 - MongoDB - Mark Smith</title>
      <link>https://pythontest.com/testandcode/episodes/142-mongodb-mark-smith/</link>
      <pubDate>Mon, 25 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/142-mongodb-mark-smith/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/142.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;MongoDB is possibly the most recognizable NoSQL document database.&lt;br&gt; Mark Smith, a developer advocate for MongoDB, answers my many questions about MongoDB.&lt;br&gt; We cover some basics, but also discuss some advanced features that I never knew about before this conversation.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Special Guest: Mark Smith.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://www.mongodb.com/&#34;&gt;MongoDB&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://developer.mongodb.com/article/everything-you-know-is-wrong&#34;&gt;Everything You Know About MongoDB is Wrong!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://blog.insiderattack.net/implementing-event-sourcing-and-cqrs-pattern-with-mongodb-66991e7b72be&#34;&gt;Implementing Event Sourcing and CQRS pattern with MongoDB&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 141 - Visual Testing - Angie Jones</title>
      <link>https://pythontest.com/testandcode/episodes/141-visual-testing-angie-jones/</link>
      <pubDate>Wed, 30 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/141-visual-testing-angie-jones/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/141.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Visual Testing has come a long way from the early days of x,y mouse clicks and pixel comparisons. Angie Jones joins the show to discuss how modern visual testing tools work and how to incorporate visual testing into a complete testing strategy. &lt;/p&gt;&lt;p&gt;Some of the discussion:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Classes of visual testing: &lt;ul&gt;&lt;li&gt;problems with pixel to pixel testing&lt;/li&gt;&lt;li&gt;DOM comparisons, css, html, etc.&lt;/li&gt;&lt;li&gt;AI driven picture level testing, where failures look into the DOM to help describe the problem. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Where visual testing fits into a test strategy.&lt;/li&gt;&lt;li&gt;Combining &#34;does this look right&#34; visual testing with other test workflows.&lt;/li&gt;&lt;li&gt;&#34;A picture is worth a thousand assertions&#34; - functional assertions built into visual testing.&lt;/li&gt;&lt;li&gt;Baselining pictures in the test workflow.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Also discussed:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 140 - Testing in Scientific Research and Academia - Martin Héroux</title>
      <link>https://pythontest.com/testandcode/episodes/140-testing-in-scientific-research-and-academia-martin-heroux/</link>
      <pubDate>Fri, 18 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/140-testing-in-scientific-research-and-academia-martin-heroux/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/140.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Scientists learn programming as they need it.&lt;br&gt; Some of them learn it in college, but even if they do, that&#39;s not their focus.&lt;br&gt; It&#39;s not surprising that sharing the software used for scientific research and papers is spotty, at best.&lt;br&gt; And what about testing?&lt;br&gt; We&#39;d hope that the software behind scientific research is tested.&lt;br&gt; But why would we expect that?&lt;br&gt; We&#39;re lucky if CS students get a class or two that even mentions automated tests.&lt;br&gt; Why would we expect other scientists to just know how to test their code?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 139 - Test Automation - Shifting Testing Throughout the Software Lifecycle - Nalin Parbhu</title>
      <link>https://pythontest.com/testandcode/episodes/139-test-automation-shifting-testing-throughout-the-software-lifecycle-nalin-parbhu/</link>
      <pubDate>Fri, 04 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/139-test-automation-shifting-testing-throughout-the-software-lifecycle-nalin-parbhu/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/139.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Talking with Nalin Parbhu about the software evolution towards more test automation and the creation of Infuse and useMango.&lt;/p&gt;&lt;p&gt;We talk a software development and &#34;shift left&#34; where automated tests and quality checks have moved earlier into the software lifecycle.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Software approaches and where quality fits in&lt;/li&gt;&lt;li&gt;Shift left&lt;/li&gt;&lt;li&gt;Test automation&lt;/li&gt;&lt;li&gt;Roles of software developers, SDETs (software development engineer in test), testers, QA, etc.&lt;/li&gt;&lt;li&gt;Developers doing testing and devops&lt;/li&gt;&lt;li&gt;Automated testing vs manual testing&lt;/li&gt;&lt;li&gt;Regression testing, UI testing, black bock testing&lt;/li&gt;&lt;li&gt;Unit testing, white box, API, end to end testing&lt;/li&gt;&lt;li&gt;User acceptance testing (UAT)&lt;/li&gt;&lt;li&gt;Mullet Methodology (Agile at the front, Waterfall at the back)&lt;/li&gt;&lt;li&gt;Waterwheel Methodology (Requirements -&gt; iterative development -&gt; QA)&lt;/li&gt;&lt;li&gt;What&#39;s an agile team?&lt;/li&gt;&lt;li&gt;Developer resistance to testing&lt;/li&gt;&lt;li&gt;Manifesto for agile software development&lt;/li&gt;&lt;li&gt;Iterative development&lt;/li&gt;&lt;li&gt;Adapting to change&lt;/li&gt;&lt;li&gt;Agility: being able to change course quickly&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guests: Nalin Parbhu and Ola Omiyale.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 138 - Mutation Testing in Python with mutmut - Anders Hovmöller</title>
      <link>https://pythontest.com/testandcode/episodes/138-mutation-testing-in-python-with-mutmut-anders-hovmoller/</link>
      <pubDate>Thu, 19 Nov 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/138-mutation-testing-in-python-with-mutmut-anders-hovmoller/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/138.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Your test suite tells you about the quality of your code under test.&lt;/p&gt;&lt;p&gt; Mutation testing is a way to tell you about the quality of your test suite.&lt;/p&gt;&lt;p&gt; Anders Hovmöller wrote &lt;a href=&#34;https://mutmut.readthedocs.io/&#34;&gt;mutmut&lt;/a&gt; for mutation testing in Python, and can be used with pytest, unittest, and others.&lt;/p&gt;&lt;p&gt; In this episode, Anders explains mutation testing, how mutation testing with mutmut works, and good workflows.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 137 - Become an Author - Matt Harrison interviews Brian Okken</title>
      <link>https://pythontest.com/testandcode/episodes/137-become-an-author-matt-harrison-interviews-brian-okken/</link>
      <pubDate>Thu, 05 Nov 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/137-become-an-author-matt-harrison-interviews-brian-okken/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/137.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Matt Harrison, author of many Python books, is putting together a course, Effective Book Authoring, to help other people write and publish books.&lt;br&gt; As part of this course, he&#39;s including interviews with people who have already written books, including me. This is that interview.&lt;/p&gt;&lt;p&gt;We discuss:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Why I wrote &#34;Python Testing with pytest&#34;&lt;/li&gt;&lt;li&gt;Self publishing vs working with a publisher&lt;/li&gt;&lt;li&gt;The writing, editing, and publishing process&lt;/li&gt;&lt;li&gt;Writing format&lt;/li&gt;&lt;li&gt;Book promotion&lt;/li&gt;&lt;li&gt;Advice to other writers&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Matt Harrison.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 136 - Wearable Technology - Sophy Wong</title>
      <link>https://pythontest.com/testandcode/episodes/136-wearable-technology-sophy-wong/</link>
      <pubDate>Mon, 26 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/136-wearable-technology-sophy-wong/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/136.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Wearable technology is not just smart consumer devices like watches and activity trackers. &lt;/p&gt;&lt;p&gt;Wearable tech also includes one off projects by designers, makers, and hackers and there are more and more people producing tutorials on how to get started. Wearable tech is also a great way to get both kids and adults excited about coding, electronics, and in general, engineering skills. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 135 - Speeding up Django Test Suites - Adam Johnson</title>
      <link>https://pythontest.com/testandcode/episodes/135-speeding-up-django-test-suites-adam-johnson/</link>
      <pubDate>Tue, 20 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/135-speeding-up-django-test-suites-adam-johnson/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/135.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;All test suites start fast. But as you grow your set of tests, each test adds a little bit of time to the suite. &lt;br&gt; What can you do about it to keep test suites fast? &lt;br&gt; Some things, like parallelization, are applicable to many domains. &lt;br&gt; What about, for instance, Django applications?&lt;br&gt; Well, Adam Johnson has thought about it a lot, and is here to tell us how we can speed up our Django test suites. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 134 - Business Outcomes and Software Development - Benjamin Harding</title>
      <link>https://pythontest.com/testandcode/episodes/134-business-outcomes-and-software-development-benjamin-harding/</link>
      <pubDate>Mon, 12 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/134-business-outcomes-and-software-development-benjamin-harding/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/134.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Within software projects, there are lots of metrics we could measure. But which ones really matter. Instead of a list, Benjamin Harding shares with us a way of thinking about business outcomes that can help us with every day decision making. &lt;/p&gt;&lt;p&gt;We talk about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Business outcomes vs vanity metrics&lt;/li&gt;&lt;li&gt;As a developer, how do you keep business outcomes in mind&lt;/li&gt;&lt;li&gt;Thinking about customer value all the time&lt;/li&gt;&lt;li&gt;Communicating decisions and options in terms of costs and impact on business outcomes&lt;/li&gt;&lt;li&gt;Company culture and it&#39;s role in reinforcing a business outcome mindset&lt;/li&gt;&lt;li&gt;And even the role of team lead as impact multiplier &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I really enjoyed this conversation. But I admit that at first, I didn&#39;t realize how important this is on all software development. Metrics are front and center in a web app. But what about a service, or an embedded system with no telemetry. It still matters, maybe even more so. Little and big decisions developers face every day that have impact on costs and benefits with respect to customer value and business outcome, even if it&#39;s difficult to measure.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 133 - Major League Hacking - Jon Gottfried</title>
      <link>https://pythontest.com/testandcode/episodes/133-major-league-hacking-jon-gottfried/</link>
      <pubDate>Mon, 05 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/133-major-league-hacking-jon-gottfried/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/133.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Hackathons have been spreading around the world; many at university campuses. Major League Hacking, MLH, has been encouraging and helping hackathons.&lt;/p&gt;&lt;p&gt;Hacking can be thought of as tinkering. Taking things apart and putting them back together as an interesting experience. There&#39;s always been some of this as part of software culture.&lt;/p&gt;&lt;p&gt;The people at Major League Hacking have taken this to a whole new level, bringing together Tech creators who enjoy playing around with and crating new technology, on campuses, and now in virtual spaces, all over the world.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 132 - mocking in Python - Anna-Lena Popkes</title>
      <link>https://pythontest.com/testandcode/episodes/132-mocking-in-python-anna-lena-popkes/</link>
      <pubDate>Mon, 28 Sep 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/132-mocking-in-python-anna-lena-popkes/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/132.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Using mock objects during testing in Python.&lt;/p&gt;&lt;p&gt;Anna-Lena joins the podcast to teach us about mocks and using unittest.mock objects during testing. &lt;/p&gt;&lt;p&gt;We discuss:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;the different styles of using mocks&lt;/li&gt;&lt;li&gt;pros and cons of mocks&lt;/li&gt;&lt;li&gt;dependency injection&lt;/li&gt;&lt;li&gt;adapter pattern&lt;/li&gt;&lt;li&gt;mock hell&lt;/li&gt;&lt;li&gt;magical universe&lt;/li&gt;&lt;li&gt;and much more&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Anna-Lena Popkes.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;http://alpopkes.com/&#34;&gt;Personal webpage of Anna-Lena Popkes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/zotroneneis/magical_universe&#34;&gt;Magical Universe&lt;/a&gt; — Awesome Python features explained using the world of magic&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode/102&#34;&gt;Test &amp; Code 102: Cosmic Python, TDD, testing and external dependencies &lt;/a&gt;— The episode where Harry Percival discusses mocking.&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=rk-f3B-eMkI&#34;&gt;Talk: Harry Percival - Stop Using Mocks (for a while) - YouTube&lt;/a&gt; — Talk: Harry Percival - Stop Using Mocks (for a while)&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://docs.python.org/3/library/unittest.mock.html&#34;&gt;unittest.mock &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://docs.python.org/3/library/unittest.mock.html#auto-speccing&#34;&gt;Autospeccing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=Ldlz4V-UCFw&#34;&gt;Mock Hell Talk (45 min version) Edwin Jung - PyCon 2019 &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=CdKaZ7boiZ4&#34;&gt;Mock Hell Talk (30 min version) - Edwin Jung - PyConDE &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pycon.ee/&#34;&gt;PyCon Estonia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://ki-macht-schule.de/&#34;&gt;KI macht Schule!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://talkpython.fm/episodes/show/186/100-days-of-python-in-a-magical-universe&#34;&gt;Talk Python #186 : 100 Days of Python in a Magical Universe&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 131 - Test Smarter, Not Harder</title>
      <link>https://pythontest.com/testandcode/episodes/131-test-smarter-not-harder/</link>
      <pubDate>Mon, 21 Sep 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/131-test-smarter-not-harder/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/131.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Some people avoid writing tests. Some drudge through it painfully.&lt;br&gt; There is a better way.&lt;br&gt; In this episode, I&#39;m going to share some advice from Luke Plant on how to &lt;a href=&#34;https://lukeplant.me.uk/blog/posts/test-smarter-not-harder/&#34;&gt;&#34;Test Smarter, Not Harder&#34;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://lukeplant.me.uk/blog/posts/test-smarter-not-harder/&#34;&gt;Test smarter, not harder - lukeplant.me.uk&lt;/a&gt; — The original article by Luke&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 130 - virtualenv activation prompt consistency across shells - an open source dev and test adventure - Brian Skinn</title>
      <link>https://pythontest.com/testandcode/episodes/130-virtualenv-activation-prompt-consistency-across-shells-an-open-source-dev-and-test-adventure-brian-skinn/</link>
      <pubDate>Sun, 13 Sep 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/130-virtualenv-activation-prompt-consistency-across-shells-an-open-source-dev-and-test-adventure-brian-skinn/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/130.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;virtualenv supports six shells: bash, csh, fish, xonsh, cmd, posh. Each handles prompts slightly differently. Although the virtualenv custom prompt behavior should be the same across shells, Brian Skinn noticed inconsistencies. He set out to fix those inconsistencies. That was the start of an adventure in open source collaboration, shell prompt internals, difficult test problems, and continuous integration quirks. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 129 - How to Test Anything - David Lord</title>
      <link>https://pythontest.com/testandcode/episodes/129-how-to-test-anything-david-lord/</link>
      <pubDate>Mon, 07 Sep 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/129-how-to-test-anything-david-lord/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/129.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I asked people on twitter to fill in &#34;How do I test _____?&#34; to find out what people want to know how to test.&lt;br&gt; Lots of responses. David Lord agreed to answer them with me.&lt;br&gt; In the process, we come up with lots of great general advice on how to test just about anything.&lt;/p&gt;&lt;p&gt;Specific Questions people asked:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 128 - pytest-randomly - Adam Johnson</title>
      <link>https://pythontest.com/testandcode/episodes/128-pytest-randomly-adam-johnson/</link>
      <pubDate>Fri, 28 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/128-pytest-randomly-adam-johnson/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/128.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Software tests should be order independent. That means you should be able to run them in any order or run them in isolation and get the same result.&lt;/p&gt;&lt;p&gt;However, system state often gets in the way and order dependence can creep into a test suite.&lt;br&gt; One way to fight against order dependence is to randomize test order, and with pytest, we recommend the plugin pytest-randomly to do that for you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 127 - WFH, WTF? - Tips and Tricks for Working From Home - Reuven Lerner and Julian Sequeira</title>
      <link>https://pythontest.com/testandcode/episodes/127-wfh-wtf-tips-and-tricks-for-working-from-home-reuven-lerner-julian-sequeira/</link>
      <pubDate>Mon, 24 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/127-wfh-wtf-tips-and-tricks-for-working-from-home-reuven-lerner-julian-sequeira/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/127.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Many people have been working from home now that are not used to working from home.&lt;br&gt; Or at least are working from home more than they ever did before. That&#39;s definitely true for me.&lt;br&gt; Even though I&#39;ve been working from home since March, I wanted some tips from people who have been doing it longer.&lt;/p&gt;&lt;p&gt;Julian Sequeira, of PyBites fame, has been working from home for about a year.&lt;br&gt; Reuven Lerner, an amazing Python trainer, has been working from home for much longer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 126 - Data Science and Software Engineering Practices ( and Fizz Buzz ) - Joel Grus</title>
      <link>https://pythontest.com/testandcode/episodes/126-data-science-and-software-engineering-practices-and-fizz-buzz-joel-grus/</link>
      <pubDate>Sun, 16 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/126-data-science-and-software-engineering-practices-and-fizz-buzz-joel-grus/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/126.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Researches and others using data science and software need to follow solid software engineering practices. This is a message that Joel Grus has been promoting for some time.&lt;/p&gt;&lt;p&gt;Joel joins the show this week to talk about data science, software engineering, and even Fizz Buzz.&lt;/p&gt;&lt;p&gt;Topics include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Software Engineering practices and data science&lt;/li&gt;&lt;li&gt;Difficulties with Jupyter notebooks&lt;/li&gt;&lt;li&gt;Code reviews on experiment code&lt;/li&gt;&lt;li&gt;Unit tests on experiment code&lt;/li&gt;&lt;li&gt;Finding bugs before doing experiments&lt;/li&gt;&lt;li&gt;Tests for data pipelines&lt;/li&gt;&lt;li&gt;Tests for deep learning models &lt;/li&gt;&lt;li&gt;Showing researchers the value of tests by showing the bugs found that wouldn&#39;t have been found without them.&lt;/li&gt;&lt;li&gt;&#34;Data Science from Scratch&#34; book &lt;ul&gt;&lt;li&gt;Showing testing during teaching Data Science&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&#34;Ten Essays on Fizz Buzz&#34; book &lt;ul&gt;&lt;li&gt;Meditations on Python, mathematics, science, engineerign and design&lt;/li&gt;&lt;li&gt;Testing Fizz Buzz&lt;/li&gt;&lt;li&gt;Different algorithms and solutions to an age old interview question.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;If not Fizz Buzz, what makes a decent coding interview question.&lt;/li&gt;&lt;li&gt;pytest&lt;/li&gt;&lt;li&gt;hypothesis&lt;/li&gt;&lt;li&gt;Math requirements for data science&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Joel Grus.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 125 - pytest 6 - Anthony Sottile</title>
      <link>https://pythontest.com/testandcode/episodes/125-pytest-6-anthony-sottile/</link>
      <pubDate>Fri, 07 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/125-pytest-6-anthony-sottile/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/125.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest 6 is out. Specifically, 6.0.1, as of July 31.&lt;/p&gt;&lt;p&gt; And there&#39;s lots to be excited about.&lt;br&gt; Anthony Sottile joins the show to discuss features, improvements, documentation updates and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://docs.pytest.org/en/stable/changelog.html&#34;&gt;Full release notes / changelog&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Some of what we talk about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;How to update (at least, how I do it) &lt;ul&gt;&lt;li&gt;Run your test suites with 5.4.3 or whatever the last version you were using&lt;/li&gt;&lt;li&gt;Update to 6&lt;/li&gt;&lt;li&gt;Run again. Same output? Probably good.&lt;/li&gt;&lt;li&gt;If there are any warnings, maybe fix those.&lt;/li&gt;&lt;li&gt;You can also run with pytest -W error to turn warnings into errors.&lt;/li&gt;&lt;li&gt;Then find out all the cool stuff you can do now&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;New Features &lt;ul&gt;&lt;li&gt;pytest now supports pyproject.toml files for configuration. &lt;ul&gt;&lt;li&gt;but remember, toml syntax is different than ini files. mostly quotes are needed &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;pytest now includes inline type annotations and exposes them to user programs. &lt;ul&gt;&lt;li&gt;Most of the user-facing API is covered, as well as internal code.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;New command-line flags --no-header and --no-summary&lt;/li&gt;&lt;li&gt;A warning is now shown when an unknown key is read from a config INI file. &lt;ul&gt;&lt;li&gt;The --strict-config flag has been added to treat these warnings as errors.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;New required_plugins configuration option allows the user to specify a list of plugins, including version information, that are required for pytest to run. An error is raised if any required plugins are not found when running pytest.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Improvements &lt;ul&gt;&lt;li&gt;You can now pass output to things like less and head that close the pipe passed to them. &lt;ul&gt;&lt;li&gt;thank you!!!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Improved precision of test durations measurement. &lt;ul&gt;&lt;li&gt;use --durations=10 -vv to capture and show durations&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Rich comparison for dataclasses and attrs-classes is now recursive.&lt;/li&gt;&lt;li&gt;pytest --version now displays just the pytest version, &lt;ul&gt;&lt;li&gt;while pytest --version --version displays more verbose information including plugins. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;--junitxml now includes the exception cause in the message XML attribute for failures during setup and teardown.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Improved Documentation &lt;ul&gt;&lt;li&gt;Add a note about --strict and --strict-markers and the preference for the latter one.&lt;/li&gt;&lt;li&gt;Explain indirect parametrization and markers for fixtures.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Bug Fixes&lt;/li&gt;&lt;li&gt;Deprecations&lt;/li&gt;&lt;li&gt;Trivial/Internal Changes&lt;/li&gt;&lt;li&gt;Breaking Changes you might need to care about before upgrading &lt;ul&gt;&lt;li&gt;PytestDeprecationWarning are now errors by default. &lt;ul&gt;&lt;li&gt;Check the &lt;a href=&#34;https://docs.pytest.org/en/latest/deprecations.html&#34;&gt;deprecations and removals&lt;/a&gt; page if you are curious.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;-k and -m internals were rewritten to stop using eval(), this results in a few &lt;em&gt;slight&lt;/em&gt; changes but overall makes them much more consistent&lt;/li&gt;&lt;li&gt;testdir.run().parseoutcomes() now always returns the parsed nouns in plural form. &lt;ul&gt;&lt;li&gt;I&#39;d say that&#39;s an improvement&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Anthony Sottile.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 124 - pip dependency resolver changes</title>
      <link>https://pythontest.com/testandcode/episodes/124-pip-dependency-resolver-changes/</link>
      <pubDate>Mon, 03 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/124-pip-dependency-resolver-changes/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/124.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pip is the package installer for Python. &lt;/p&gt;&lt;p&gt;Often, when you run pip, especially the first time in a new virtual environment, you will see something like:&lt;/p&gt;WARNING: You are using pip version 20.1.1; however, version 20.2 is available.&lt;p&gt; You should consider upgrading via the &#39;python -m pip install --upgrade pip&#39; command.&lt;/p&gt;&lt;p&gt;And you should. Because 20.2 has a new dependency resolver.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 123 - GitHub Actions - Tania Allard</title>
      <link>https://pythontest.com/testandcode/episodes/123-github-actions-tania-allard/</link>
      <pubDate>Fri, 24 Jul 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/123-github-actions-tania-allard/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/123.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Lots of Python projects are starting to use GitHub Actions for Continous Integration &amp; Deployment (CI/CD), as well as other workflows.&lt;/p&gt;&lt;p&gt;Tania Allard, a Senior Cloud Developer Advocate at Microsoft, joins the show to answer some of my questions regarding setting up a Python project to use Actions.&lt;/p&gt;&lt;p&gt;Some of the topics covered:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;How to get started with GitHub Actions for a Python project?&lt;/li&gt;&lt;li&gt;What are workflow files?&lt;/li&gt;&lt;li&gt;Does it matter what the file name is called?&lt;/li&gt;&lt;li&gt;Can I have / Should I have more than one workflow?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Tania Allard.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 122 - Better Resumes for Software Engineers - Randall Kanna</title>
      <link>https://pythontest.com/testandcode/episodes/122-better-resumes-for-software-engineers-randall-kanna/</link>
      <pubDate>Thu, 16 Jul 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/122-better-resumes-for-software-engineers-randall-kanna/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/122.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A great resume is key to landing a great software job.&lt;br&gt; There&#39;s no surprise there.&lt;br&gt; But so many people make mistakes on their resume that can very easily be fixed.&lt;/p&gt;&lt;p&gt;Randall Kanna is on the show today to help us understand how to improve our resumes, and in turn, help us have better careers.&lt;/p&gt;&lt;p&gt;Special Guest: Randall Kanna.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 121 - Industrial 3D Printing and Python, Finite State Machines, and Simulating Hardware - Len Wanger</title>
      <link>https://pythontest.com/testandcode/episodes/121-industrial-3d-printing-python-finite-state-machines-and-simulating-hardware-len-wanger/</link>
      <pubDate>Thu, 09 Jul 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/121-industrial-3d-printing-python-finite-state-machines-and-simulating-hardware-len-wanger/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/121.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Len Wanger works on industrial 3D printers. And I was pleased to find out that&lt;br&gt; there&#39;s a bunch of Python in those printers as well. &lt;/p&gt;&lt;p&gt;In this episode we talk about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;3D printers&lt;/li&gt;&lt;li&gt;What are the different types of 3D printers?&lt;/li&gt;&lt;li&gt;Where are 3D printed industrial parts being used?&lt;/li&gt;&lt;li&gt;Why use one type of additive manufacturing over another?&lt;/li&gt;&lt;li&gt;Python in 3D printing hardware.&lt;/li&gt;&lt;li&gt;What are Finite State Machines, FSMs?&lt;/li&gt;&lt;li&gt;Benefits of FSMs for testing, logging, and breaking a complex behavior into small testable parts.&lt;/li&gt;&lt;li&gt;Benefits of simulation in writing and testing software to control hardware.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Len Wanger.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 120 - FastAPI and Typer - Sebastián Ramírez</title>
      <link>https://pythontest.com/testandcode/episodes/120-fastapi-typer-sebastian-ramirez/</link>
      <pubDate>Fri, 03 Jul 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/120-fastapi-typer-sebastian-ramirez/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/120.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;FastAPI is a modern, fast (high-performance), web framework for building APIs with Python based on standard Python type hints.&lt;br&gt; Typer is a library for building CLI applications, also based on Python type hints.&lt;br&gt; Type hints and many other details are intended to make it easier to develop, test, and debug applications using FastAPI and Typer.&lt;/p&gt;&lt;p&gt;The person behind FastAPI and Typer is Sebastián Ramírez.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 119 - Editable Python Installs, Packaging Standardization, and pyproject.toml - Brett Cannon</title>
      <link>https://pythontest.com/testandcode/episodes/119-editable-python-installs-packaging-standardization-and-pyproject-toml-brett-cannon/</link>
      <pubDate>Fri, 26 Jun 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/119-editable-python-installs-packaging-standardization-and-pyproject-toml-brett-cannon/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/119.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;There&#39;s stuff going on in Python packaging and pyproject.toml.&lt;/p&gt;&lt;p&gt;Brett and I talk about some upcoming work on Python packaging, such as:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;editable installs&lt;/li&gt;&lt;li&gt;the need for standardization&lt;/li&gt;&lt;li&gt;configuration of other tools in pyproject.toml&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And then get off on tangents and talk about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;why it&#39;s good to have packages like pip, toml, setuptools, wheel, etc not part of the standard library&lt;/li&gt;&lt;li&gt;should we remove some stuff from the standard library&lt;/li&gt;&lt;li&gt;the standard library using unittest for testing the standard library &lt;ul&gt;&lt;li&gt;why not hypothesis&lt;/li&gt;&lt;li&gt;I didn&#39;t bring up &#34;why not pytest?&#34; but you know I was thinking it.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;why CPython and not C++Python&lt;/li&gt;&lt;li&gt;and more&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Brett Cannon.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 118 - Code Coverage and 100% Coverage</title>
      <link>https://pythontest.com/testandcode/episodes/118-code-coverage-and-100-coverage/</link>
      <pubDate>Thu, 25 Jun 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/118-code-coverage-and-100-coverage/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/118.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Code Coverage or Test Coverage is a way to measure what lines of code and branches in your code that are utilized during testing. &lt;br&gt; Coverage tools are an important part of software engineering. &lt;/p&gt;&lt;p&gt;But there&#39;s also lots of different opinions about using it. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Should you try for 100% coverage? &lt;/li&gt;&lt;li&gt;What code can and should you exclude? &lt;/li&gt;&lt;li&gt;What about targets?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I&#39;ve been asked many times what I think about code coverage or test coverage.&lt;br&gt; This episode is a train of thought brain dump on what I think about code coverage.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 117 - Python extension for VS Code - Brett Cannon</title>
      <link>https://pythontest.com/testandcode/episodes/117-python-extension-for-vs-code-brett-cannon/</link>
      <pubDate>Thu, 18 Jun 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/117-python-extension-for-vs-code-brett-cannon/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/117.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The Python extension for VS Code is most downloaded extension for VS Code. &lt;br&gt; Brett Cannon is the manager for the distributed development team of the Python extension for VS Code.&lt;/p&gt;&lt;p&gt;In this episode, Brett and I discuss the Python extension and VS Code, including:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;pytest support&lt;/li&gt;&lt;li&gt;virtual environment support&lt;/li&gt;&lt;li&gt;how settings work, including user and workspace settings&lt;/li&gt;&lt;li&gt;multi root projects&lt;/li&gt;&lt;li&gt;testing Python in VS Code&lt;/li&gt;&lt;li&gt;debugging and pydevd&lt;/li&gt;&lt;li&gt;jump to cursor feature&lt;/li&gt;&lt;li&gt;upcoming features&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Brett Cannon.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 116 - 15 amazing pytest plugins - Michael Kennedy</title>
      <link>https://pythontest.com/testandcode/episodes/116-15-amazing-pytest-plugins-michael-kennedy/</link>
      <pubDate>Sun, 07 Jun 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/116-15-amazing-pytest-plugins-michael-kennedy/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/116.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest plugins are an amazing way to supercharge your test suites, leveraging great solutions from people solving test problems all over the world. In this episode Michael and I discuss 15 favorite plugins that you should know about.&lt;/p&gt;&lt;p&gt;We also discuss fixtures and plugins and other testing tools that work great with pytest&lt;/p&gt;&lt;ul&gt;&lt;li&gt;tox&lt;/li&gt;&lt;li&gt;GitHub Actions&lt;/li&gt;&lt;li&gt;Coverage.py&lt;/li&gt;&lt;li&gt;Selenium + splinter with pytest-splinter&lt;/li&gt;&lt;li&gt;Hypothesis&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And then our list of pytest plugins:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 115 - Catching up with Nina Zakharenko</title>
      <link>https://pythontest.com/testandcode/episodes/115-catching-up-with-nina-zakharenko/</link>
      <pubDate>Sat, 30 May 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/115-catching-up-with-nina-zakharenko/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/115.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;One of the great things about attending in person coding conferences, such as PyCon, is the hallway track, where you can catch up with people you haven&#39;t seen for possibly a year, or maybe even the first time you&#39;ve met in person. &lt;/p&gt;&lt;p&gt;Nina is starting something like the hallway track, online, on twitch, and it&#39;s already going, so check out &lt;a href=&#34;https://www.twitch.tv/videos/635831555&#34;&gt;the first episode of Python Tea&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 114 - The Python Software Foundation (PSF) Board Elections - Ewa Jodlowska / Christopher Neugebauer</title>
      <link>https://pythontest.com/testandcode/episodes/114-the-python-software-foundation-psf-board-elections-ewa-jodlowska-christopher-neugebauer/</link>
      <pubDate>Sun, 24 May 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/114-the-python-software-foundation-psf-board-elections-ewa-jodlowska-christopher-neugebauer/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/114.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&#34;The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers.&#34;&lt;/p&gt;&lt;p&gt;That&#39;s a lot of responsibility, and to that end, the PSF Board Directors help out quite a bit. &lt;/p&gt;&lt;p&gt;If you want to be a part of the board, you can. There&#39;s an election coming up right around the corner and you gotta get your nomination in by May 31. You can also join the PSF if you want to vote for who gets to be part of the board. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 113 - Technical Debt - James Smith</title>
      <link>https://pythontest.com/testandcode/episodes/113-technical-debt-james-smith/</link>
      <pubDate>Fri, 15 May 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/113-technical-debt-james-smith/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/113.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Technical debt has to be dealt with on a regular basis to have a healthy product and development team.&lt;/p&gt;&lt;p&gt;The impacts of technical debt include emotional drain on engineers and slowing down development and can adversely affect your hiring ability and retention.&lt;/p&gt;&lt;p&gt;But really, what is technical debt? Can we measure it? How do we reduce it, and when?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 112 - Six Principles of Readable Tests - David Seddon</title>
      <link>https://pythontest.com/testandcode/episodes/112-six-principles-of-readable-tests-david-seddon/</link>
      <pubDate>Fri, 08 May 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/112-six-principles-of-readable-tests-david-seddon/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/112.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&#34;Code is read much more often than it is written.&#34; - Guido van Rossum&lt;br&gt; This is true for both production code and test code.&lt;/p&gt;&lt;p&gt;When you are trying to understand why a test is failing, you&#39;ll be very grateful to the test author if they&#39;ve taken the care to make it readable.&lt;/p&gt;&lt;p&gt;David Seddon came up with 6 principles to help us write more readable tests.&lt;br&gt; We discuss these, as well as more benefits of readable tests.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 111 - Subtests in Python with unittest and pytest - Paul Ganssle</title>
      <link>https://pythontest.com/testandcode/episodes/111-subtests-in-python-with-unittest-and-pytest-paul-ganssle/</link>
      <pubDate>Sat, 02 May 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/111-subtests-in-python-with-unittest-and-pytest-paul-ganssle/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/111.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In both unittest and pytest, when a test function hits a failing assert, the test stops and is marked as a failed test. &lt;/p&gt;&lt;p&gt;What if you want to keep going, and check more things?&lt;/p&gt;&lt;p&gt; There are a few ways. One of them is subtests.&lt;/p&gt;&lt;p&gt;Python&#39;s unittest introduced subtests in Python 3.4.&lt;/p&gt;&lt;p&gt; pytest introduced support for subtests with changes in pytest 4.4 and a plugin, called pytest-subtests.&lt;br&gt; Subtests are still not really used that much.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 110 - Testing Django - from unittest to pytest - Adam Parkin</title>
      <link>https://pythontest.com/testandcode/episodes/110-testing-django-from-unittest-to-pytest-adam-parkin/</link>
      <pubDate>Sat, 25 Apr 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/110-testing-django-from-unittest-to-pytest-adam-parkin/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/110.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Django supports testing out of the box with some cool extensions to unittest. However, many people are using pytest for their Django testing, mostly using the pytest-django plugin.&lt;/p&gt;&lt;p&gt;Adam Parkin, who is known online as &lt;a href=&#34;https://twitter.com/codependentcodr&#34;&gt;CodependentCodr&lt;/a&gt;, joins us to talk about migrating an existing Django project from unittest to pytest. Adam tells us just how easy this is.&lt;/p&gt;&lt;p&gt;Special Guest: Adam Parkin.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 109 - Testing in Financial Services - Eric Bergemann</title>
      <link>https://pythontest.com/testandcode/episodes/109-testing-in-financial-services-eric-bergemann/</link>
      <pubDate>Tue, 14 Apr 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/109-testing-in-financial-services-eric-bergemann/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/109.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Financial services have their own unique testing development challenges. But they also have lots of the same challenges as many other software projects. &lt;/p&gt;&lt;p&gt;Eric Bergemann joins Brian Okken to discuss:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Specific testing challenges in the financial services domain&lt;/li&gt;&lt;li&gt;CI/CD : Continuous Integration, Continuous Deployment&lt;/li&gt;&lt;li&gt;TDD : Test Driven Development&lt;/li&gt;&lt;li&gt;Confidence from testable applications&lt;/li&gt;&lt;li&gt;Testing strategies to add coverage to legacy systems&lt;/li&gt;&lt;li&gt;Testing the data and test cases themselves&lt;/li&gt;&lt;li&gt;DevOps&lt;/li&gt;&lt;li&gt;Continuous testing&lt;/li&gt;&lt;li&gt;Manual testing procedures&lt;/li&gt;&lt;li&gt;BDD &amp; Gherkin&lt;/li&gt;&lt;li&gt;Hiring in vs training industry knowledge&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Eric Bergemann.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 108 - PySpark - Jonathan Rioux</title>
      <link>https://pythontest.com/testandcode/episodes/108-pyspark-jonathan-rioux/</link>
      <pubDate>Thu, 09 Apr 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/108-pyspark-jonathan-rioux/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/108.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Apache Spark is a unified analytics engine for large-scale data processing.&lt;br&gt; PySpark blends the powerful Spark big data processing engine with the Python programming language to provide a data analysis platform that can scale up for nearly any task.&lt;/p&gt;&lt;p&gt;Johnathan Rioux, author of &#34;PySpark in Action&#34;, joins the show and gives us a great introduction of Spark and PySpark to help us decide how to get started and decide whether or not to decide if Spark and PySpark are right you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 107 - Property Based Testing in Python with Hypothesis - Alexander Hultnér</title>
      <link>https://pythontest.com/testandcode/episodes/107-property-based-testing-in-python-with-hypothesis-alexander-hultner/</link>
      <pubDate>Fri, 27 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/107-property-based-testing-in-python-with-hypothesis-alexander-hultner/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/107.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Hypothesis is the Python tool used for property based testing.&lt;br&gt; Hypothesis claims to combine &#34;human understanding of your problem domain with machine intelligence to improve the quality of your testing process while spending less time writing tests.&#34;&lt;/p&gt;&lt;p&gt;In this episode Alexander Hultnér introduces us to property based testing in Python with Hypothesis.&lt;/p&gt;&lt;p&gt;Some topics covered:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;What is property based testing&lt;/li&gt;&lt;li&gt;Thinking differently for property based testing&lt;/li&gt;&lt;li&gt;Using hypothesis / property based testing in conjunction with normal testing&lt;/li&gt;&lt;li&gt;Failures saved and re-run&lt;/li&gt;&lt;li&gt;What parts of development/testing is best suited for hypothesis / property based testing &lt;/li&gt;&lt;li&gt;Comparing function implementations&lt;/li&gt;&lt;li&gt;Testing against REST APIs that use Open API / Swagger with schemathesis &lt;/li&gt;&lt;li&gt;Changing the number of tests in different test environments&lt;/li&gt;&lt;li&gt;System, integration, end to end, and unit tests&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Alexander Hultnér.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 106 - Visual Testing - How IDEs can make software testing easier - Paul Everitt</title>
      <link>https://pythontest.com/testandcode/episodes/106-visual-testing-how-ides-can-make-software-testing-easier-paul-everitt/</link>
      <pubDate>Fri, 20 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/106-visual-testing-how-ides-can-make-software-testing-easier-paul-everitt/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/106.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;IDEs can help people with automated testing.&lt;/p&gt;&lt;p&gt;In this episode, Paul Everitt and Brian discuss ways IDEs can encourage testing and make it easier for everyone, including beginners. We discuss features that exist and are great, as well as what is missing.&lt;/p&gt;&lt;p&gt;The conversation also includes topics around being welcoming to new contributors for both open source and professional projects.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 105 - TAP - Test Anything Protocol - Matt Layman</title>
      <link>https://pythontest.com/testandcode/episodes/105-tap-test-anything-protocol-matt-layman/</link>
      <pubDate>Wed, 11 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/105-tap-test-anything-protocol-matt-layman/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/105.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The Test Anything Protocol, or TAP, is a way to record test results in a language agnostic way, predates XML by about 10 years, and is still alive and kicking.&lt;/p&gt;&lt;p&gt;Matt Layman has contributed to Python in many ways, including his educational newsletter, and his Django podcast, Django Riffs.&lt;/p&gt;&lt;p&gt;Matt is also the maintainer of tap.py and pytest-tap, two tools that bring the Test Anything Protocol to Python.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 104 - Top 28 pytest plugins - Anthony Sottile</title>
      <link>https://pythontest.com/testandcode/episodes/104-top-28-pytest-plugins-anthony-sottile/</link>
      <pubDate>Wed, 04 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/104-top-28-pytest-plugins-anthony-sottile/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/104.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest is awesome by itself. pytest + plugins is even better.&lt;br&gt; In this episode, Anthony Sottile and Brian Okken discuss the top 28 pytest plugins.&lt;/p&gt;&lt;p&gt;Some of the plugins discussed (we also mention a few plugins related to some on this list):&lt;/p&gt;&lt;ol&gt;&lt;li&gt; pytest-cov&lt;/li&gt;&lt;li&gt; pytest-timeout&lt;/li&gt;&lt;li&gt; pytest-xdist&lt;/li&gt;&lt;li&gt; pytest-mock&lt;/li&gt;&lt;li&gt; pytest-runner&lt;/li&gt;&lt;li&gt; pytest-instafail&lt;/li&gt;&lt;li&gt; pytest-django&lt;/li&gt;&lt;li&gt; pytest-html&lt;/li&gt;&lt;li&gt; pytest-metadata&lt;/li&gt;&lt;li&gt;pytest-asyncio&lt;/li&gt;&lt;li&gt;pytest-split-tests&lt;/li&gt;&lt;li&gt;pytest-sugar&lt;/li&gt;&lt;li&gt;pytest-rerunfailures&lt;/li&gt;&lt;li&gt;pytest-env&lt;/li&gt;&lt;li&gt;pytest-cache&lt;/li&gt;&lt;li&gt;pytest-flask&lt;/li&gt;&lt;li&gt;pytest-benchmark&lt;/li&gt;&lt;li&gt;pytest-ordering&lt;/li&gt;&lt;li&gt;pytest-watch&lt;/li&gt;&lt;li&gt;pytest-pythonpath&lt;/li&gt;&lt;li&gt;pytest-flake8&lt;/li&gt;&lt;li&gt;pytest-pep8&lt;/li&gt;&lt;li&gt;pytest-repeat&lt;/li&gt;&lt;li&gt;pytest-pylint&lt;/li&gt;&lt;li&gt;pytest-randomly&lt;/li&gt;&lt;li&gt;pytest-selenium&lt;/li&gt;&lt;li&gt;pytest-mypy&lt;/li&gt;&lt;li&gt;pytest-freezegun&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Honorable mention:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;pytest-black&lt;/li&gt;&lt;li&gt;pytest-emoji&lt;/li&gt;&lt;li&gt;pytest-poo&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Anthony Sottile.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 103 - Django - Lacey Williams Henschel</title>
      <link>https://pythontest.com/testandcode/episodes/103-django-lacey-williams-henschel/</link>
      <pubDate>Sat, 29 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/103-django-lacey-williams-henschel/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/103.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Django is without a doubt one of the most used web frameworks for Python. Lacey Williams Henschel is a Django consultant and has joined me to talk about Django, the Django community, and so much more.&lt;/p&gt;&lt;p&gt;Topics:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Django&lt;/li&gt;&lt;li&gt;The Django Community&lt;/li&gt;&lt;li&gt;Django Girls&lt;/li&gt;&lt;li&gt;Django Girls Tutorial&lt;/li&gt;&lt;li&gt;DjangoCon&lt;/li&gt;&lt;li&gt;Software Testing&lt;/li&gt;&lt;li&gt;Using tests during learning&lt;/li&gt;&lt;li&gt;pytest-django&lt;/li&gt;&lt;li&gt;testing Django&lt;/li&gt;&lt;li&gt;Wagtail&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Lacey Williams Henschel.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://www.djangoproject.com/&#34;&gt;Django &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://djangogirls.org/&#34;&gt;Django Girls &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://tutorial.djangogirls.org/en/&#34;&gt;Django Girls Tutorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://2020.djangocon.us/&#34;&gt;DjangoCon US 2020 &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.djangounderthehood.com/&#34;&gt;Django: Under the Hood&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pydata.org/&#34;&gt;PyData&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://2020.pycascades.com/&#34;&gt;PyCascades&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.django-rest-framework.org/&#34;&gt;Django REST framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pytest-django.readthedocs.io/en/latest/&#34;&gt;pytest-django&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://wagtail.io/&#34;&gt;Wagtail CMS - Django Content Management System&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 102 - Cosmic Python, TDD, testing and external dependencies - Harry Percival</title>
      <link>https://pythontest.com/testandcode/episodes/102-cosmic-python-tdd-testing-and-external-dependencies-harry-percival/</link>
      <pubDate>Thu, 27 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/102-cosmic-python-tdd-testing-and-external-dependencies-harry-percival/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/102.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Harry Percival has completed his second book, &#34;Architecture Patterns with Python&#34;.&lt;br&gt; So of course we talk about the book, also known as &#34;Cosmic Python&#34;.&lt;br&gt; We also discuss lots of testing topics, especially related to larger systems and systems involving third party interfaces and APIs.&lt;/p&gt;&lt;p&gt;Topics &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Harry&#39;s new book, &#34;Architecture Patterns with Python&#34;. a.k.a. Cosmic Python &lt;/li&gt;&lt;li&gt;TDD : Test Driven Development&lt;/li&gt;&lt;li&gt;Test Pyramid&lt;/li&gt;&lt;li&gt;Tradeoffs of different architectural choices&lt;/li&gt;&lt;li&gt;Mocks and their pitfalls&lt;/li&gt;&lt;li&gt;Avoiding mocks&lt;/li&gt;&lt;li&gt;Separating conceptual business logic&lt;/li&gt;&lt;li&gt;Dependency injection&lt;/li&gt;&lt;li&gt;Dependency inversion&lt;/li&gt;&lt;li&gt;Identifying external dependencies&lt;/li&gt;&lt;li&gt;Interface adapters to mimize the exposed surface area of external dependencies&lt;/li&gt;&lt;li&gt;London School vs Classic/Detroit School of TDD&lt;/li&gt;&lt;li&gt;Testing strategies for testing external REST APIs&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Links:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 101 - Application Security - Anthony Shaw</title>
      <link>https://pythontest.com/testandcode/episodes/101-application-security-anthony-shaw/</link>
      <pubDate>Wed, 19 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/101-application-security-anthony-shaw/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/101.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Application security is best designed into a system from the start.&lt;br&gt; Anthony Shaw is doing something about it by creating an editor plugin that actually helps you write more secure application code while you are coding.&lt;/p&gt;&lt;p&gt;On today&#39;s Test &amp; Code, Anthony and I discuss his security plugin, but also application security in general, as well as other security components you need to consider.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 100 - A/B Testing - Leemay Nassery</title>
      <link>https://pythontest.com/testandcode/episodes/100-a-b-testing-leemay-nassery/</link>
      <pubDate>Thu, 13 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/100-a-b-testing-leemay-nassery/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/100.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Let&#39;s say you have a web application and you want to make some changes to improve it.&lt;br&gt; You may want to A/B test it first to make sure you are really improving things.&lt;/p&gt;&lt;p&gt;But really what is A/B testing? &lt;/p&gt;&lt;p&gt;That&#39;s what we&#39;ll find out on this episode with Leemay Nassery.&lt;/p&gt;&lt;p&gt;Special Guest: Leemay Nassery.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 99 - Software Maintenance and Chess</title>
      <link>https://pythontest.com/testandcode/episodes/99-software-maintenance-and-chess/</link>
      <pubDate>Thu, 30 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/99-software-maintenance-and-chess/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/99.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I play a form of group chess that has some interesting analogies to software development and maintenance of existing systems. This episode explains group chess and explores a few of those analogies.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xA;&lt;br&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 98 - pytest-testmon - selects tests affected by changed files and methods - Tibor Arpas</title>
      <link>https://pythontest.com/testandcode/episodes/98-pytest-testmon-selects-tests-affected-by-changed-files-and-methods-tibor-arpas/</link>
      <pubDate>Tue, 21 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/98-pytest-testmon-selects-tests-affected-by-changed-files-and-methods-tibor-arpas/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/98.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest-testmon is a pytest plugin which selects and executes only tests you need to run. It does this by collecting dependencies between tests and all executed code (internally using Coverage.py) and comparing the dependencies against changes. testmon updates its database on each test execution, so it works independently of version control.&lt;/p&gt;&lt;p&gt;In this episode, I talk with testmon creator Tibor Arpas about testmon, about it&#39;s use and how it works.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 97 - 2019 Retrospective, 2020 Plans, and an amazing decade</title>
      <link>https://pythontest.com/testandcode/episodes/97-2019-retrospective-2020-plans-and-an-amazing-decade/</link>
      <pubDate>Tue, 31 Dec 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/97-2019-retrospective-2020-plans-and-an-amazing-decade/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/97.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This episode is not just a look back on 2019, and a look forward to 2020.&lt;br&gt; Also, 2019 is the end of an amazingly transofrmative decade for me, so I&#39;m going to discuss that as well.&lt;/p&gt;&lt;p&gt;top 10 episodes of 2019&lt;/p&gt;&lt;ul&gt;&lt;li&gt;10: &lt;a href=&#34;https://pythontest.com/testandcode/46&#34;&gt;episode 46&lt;/a&gt;, Testing Hard To Test Applications - Anthony Shaw&lt;/li&gt;&lt;li&gt;9: &lt;a href=&#34;https://pythontest.com/testandcode/64&#34;&gt;episode 64&lt;/a&gt;, Practicing Programming to increase your value&lt;/li&gt;&lt;li&gt;8: &lt;a href=&#34;https://pythontest.com/testandcode/70&#34;&gt;episode 70&lt;/a&gt;, Learning Software without a CS degree - Dane Hillard&lt;/li&gt;&lt;li&gt;7: &lt;a href=&#34;https://pythontest.com/testandcode/75&#34;&gt;episode 75&lt;/a&gt;, Modern Testing Principles - Alan Page&lt;/li&gt;&lt;li&gt;6: &lt;a href=&#34;https://pythontest.com/testandcode/72&#34;&gt;episode 72&lt;/a&gt;, Technical Interview Fixes - April Wensel&lt;/li&gt;&lt;li&gt;5: &lt;a href=&#34;https://pythontest.com/testandcode/69&#34;&gt;episode 69&lt;/a&gt;, Andy Hunt - The Pragmatic Programmer&lt;/li&gt;&lt;li&gt;4: &lt;a href=&#34;https://pythontest.com/testandcode/73&#34;&gt;episode 73&lt;/a&gt;, PyCon 2019 Live Recording&lt;/li&gt;&lt;li&gt;3: &lt;a href=&#34;https://pythontest.com/testandcode/71&#34;&gt;episode 71&lt;/a&gt;, Memorable Tech Talks, The Ultimate Guide - Nina Zakharenko&lt;/li&gt;&lt;li&gt;2: &lt;a href=&#34;https://pythontest.com/testandcode/76&#34;&gt;episode 76&lt;/a&gt;, TDD: Don’t be afraid of Test-Driven Development - Chris May&lt;/li&gt;&lt;li&gt;1: &lt;a href=&#34;https://pythontest.com/testandcode/89&#34;&gt;episode 89&lt;/a&gt;, Improving Programming Education - Nicholas Tollervey&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Looking back on the last decade&lt;/strong&gt;&lt;br&gt; Some amazing events, like 2 podcasts, a book, a blog, speaking events, and teaching has led me to where we&#39;re at now.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 96 - Azure Pipelines - Thomas Eckert</title>
      <link>https://pythontest.com/testandcode/episodes/96-azure-pipelines-thomas-eckert/</link>
      <pubDate>Mon, 16 Dec 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/96-azure-pipelines-thomas-eckert/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/96.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Pipelines are used a lot in software projects to automated much of the work around build, test, deployment and more. Thomas Eckert talks with me about pipelines, specifically Azure Pipelines. Some of the history, and how we can use pipelines for modern Python projects.&lt;/p&gt;&lt;p&gt;Special Guest: Thomas Eckert.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pallets/click&#34;&gt;click repo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/marketplace/actions/azure-pipelines-action&#34;&gt;Azure Pipelines Action · Actions · GitHub Marketplace&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 95 - Data Science Pipeline Testing with Great Expectations - Abe Gong</title>
      <link>https://pythontest.com/testandcode/episodes/95-data-science-pipeline-testing-with-great-expectations-abe-gong/</link>
      <pubDate>Sat, 30 Nov 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/95-data-science-pipeline-testing-with-great-expectations-abe-gong/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/95.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Data science and machine learning are affecting more of our lives every day. Decisions based on data science and machine learning are heavily dependent on the quality of the data, and the quality of the data pipeline.&lt;/p&gt;&lt;p&gt;Some of the software in the pipeline can be tested to some extent with traditional testing tools, like pytest.&lt;/p&gt;&lt;p&gt;But what about the data? The data entering the pipeline, and at various stages along the pipeline, should be validated.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 94 - The real 11 reasons I don&#39;t hire you - Charity Majors</title>
      <link>https://pythontest.com/testandcode/episodes/94-the-real-11-reasons-i-dont-hire-you-charity-majors/</link>
      <pubDate>Mon, 18 Nov 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/94-the-real-11-reasons-i-dont-hire-you-charity-majors/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/94.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;You&#39;ve applied for a job, maybe lots of jobs.&lt;br&gt; Depending on the company, you&#39;ve gotta get through:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;a resume review&lt;/li&gt;&lt;li&gt;a coding challange&lt;/li&gt;&lt;li&gt;a phone screen&lt;/li&gt;&lt;li&gt;maybe another code example&lt;/li&gt;&lt;li&gt;an in person interview&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you get the job, and you enjoy the work, awesome, congratulations.&lt;/p&gt;&lt;p&gt;If you don&#39;t get the job, it&#39;d be really great to know why.&lt;/p&gt;&lt;p&gt;Sometimes it isn&#39;t because you aren&#39;t a skilled engineer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 93 - Software Testing, Book Writing, Teaching, Public Speaking, and PyCarolinas - Andy Knight</title>
      <link>https://pythontest.com/testandcode/episodes/93-software-testing-book-writing-teaching-public-speaking-and-pycarolinas-andy-knight/</link>
      <pubDate>Wed, 30 Oct 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/93-software-testing-book-writing-teaching-public-speaking-and-pycarolinas-andy-knight/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/93.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Andy Knight is the Automation Panda. &lt;/p&gt;&lt;p&gt;Andy Knight is passionate about software testing, and shares his passion through public speaking, writing on automationpanda.com, teaching as an adjunct professor, and now also through writing a book and organizing a new regional Python conference.&lt;/p&gt;&lt;p&gt;Topics of this episode include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Andy&#39;s book on software testing&lt;/li&gt;&lt;li&gt;Being an adjunct professor&lt;/li&gt;&lt;li&gt;Public speaking and preparing talk proposals &lt;ul&gt;&lt;li&gt;including tips from Andy about proposals and preparing for talks&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;PyCarolinas&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Special Guest: Andy Knight.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 92 - 9 Steps to Crater Quality and Destroy Customer Satisfaction - Cristian Medina</title>
      <link>https://pythontest.com/testandcode/episodes/92-9-steps-to-crater-quality-destroy-customer-satisfaction-cristian-medina/</link>
      <pubDate>Sun, 20 Oct 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/92-9-steps-to-crater-quality-destroy-customer-satisfaction-cristian-medina/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/92.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Cristian Medina wrote an article recently called &#34;Test Engineering Anti-Patterns: Destroy Your Customer Satisfaction and Crater Your Quality By Using These 9 Easy Organizational Practices&#34;&lt;/p&gt;&lt;p&gt;Of course, it&#39;s sarcastic, and aims to highlight many problems with organizational practices that reduce software quality.&lt;/p&gt;&lt;p&gt;The article doesn&#39;t go out of character, and only promotes the anti-patterns.&lt;br&gt; However, in this interview, we discuss each point, and the corollary of what you really should do. At least, our perspectives.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 91 - Python 3.8 - there&#39;s a lot more new than most people are talking about</title>
      <link>https://pythontest.com/testandcode/episodes/91-python-3-8-theres-a-lot-more-new-than-most-people-are-talking-about/</link>
      <pubDate>Wed, 16 Oct 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/91-python-3-8-theres-a-lot-more-new-than-most-people-are-talking-about/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/91.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Python 3.8.0 final is live and ready to download.&lt;/p&gt;&#xA;&lt;p&gt;On todays episode, we&#39;re going to run through what&#39;s new, picking out the bits that I think are the most interesting and affect the most people, including&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;new language features&lt;/li&gt;&#xA;&lt;li&gt;standard library changes&lt;/li&gt;&#xA;&lt;li&gt;optimizations in 3.8&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Not just the big stuff everyone&#39;s already talking about. But also some little things that will make programming Python even more fun and easy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 90 - Dynamic Scope Fixtures in pytest 5.2 - Anthony Sottile</title>
      <link>https://pythontest.com/testandcode/episodes/90-dynamic-scope-fixtures-in-pytest-5-2-anthony-sottile/</link>
      <pubDate>Fri, 11 Oct 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/90-dynamic-scope-fixtures-in-pytest-5-2-anthony-sottile/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/90.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest 5.2 was just released, and with it, a cool fun feature called dynamic scope fixtures. Anthony Sottile so tilly is one of the pytest core developers, so I thought it be fun to have Anthony describe this new feature for us.&lt;/p&gt;&#xA;&lt;p&gt;We also talk about parametrized testing and really what is fixture scope and then what is dynamic scope.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 89 - Improving Programming Education - Nicholas Tollervey</title>
      <link>https://pythontest.com/testandcode/episodes/89-improving-programming-education-nicholas-tollervey/</link>
      <pubDate>Sat, 28 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/89-improving-programming-education-nicholas-tollervey/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/89.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Nicholas Tollervey is working toward better ways of teaching programming. His projects include the Mu Editor, PyperCard, and CodeGrades. Many of us talk about problems with software education. Nicholas is doing something about it.&lt;/p&gt;&lt;p&gt;Special Guest: Nicholas Tollervey.&lt;/p&gt;  &lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://codewith.mu/&#34; title=&#34;Code With Mu&#34; rel=&#34;nofollow&#34;&gt;Code With Mu&lt;/a&gt; — a simple Python editor for beginner programmers&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://madewith.mu/&#34; title=&#34;Made With Mu&#34; rel=&#34;nofollow&#34;&gt;Made With Mu&lt;/a&gt; — A blog to celebrate projects that use the Mu Python code editor to create cool stuff.&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pypercard.readthedocs.io/en/latest/&#34; title=&#34;PyperCard&#34; rel=&#34;nofollow&#34;&gt;PyperCard&lt;/a&gt; — Easy GUIs for All&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://codegrades.com/&#34; title=&#34;CodeGrades&#34; rel=&#34;nofollow&#34;&gt;CodeGrades&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 88 - Error Monitoring, Crash Reporting, Performance Monitoring - JD Trask</title>
      <link>https://pythontest.com/testandcode/episodes/88-error-monitoring-crash-reporting-performance-monitoring-jd-trask/</link>
      <pubDate>Fri, 20 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/88-error-monitoring-crash-reporting-performance-monitoring-jd-trask/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/88.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Tools like error monitoring, crash reporting, and performance monitoring are tools to help you create a better user experience and are fast becoming crucial tools for web development and site reliability. But really what are they? And when do you need them? &lt;/p&gt;&#xA;&lt;p&gt;You&#39;ve built a cool web app or service, and you want to make sure your customers have a great experience.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 87 - Paths to Parametrization - from one test to many</title>
      <link>https://pythontest.com/testandcode/episodes/87-paths-to-parametrization-from-one-test-to-many/</link>
      <pubDate>Wed, 11 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/87-paths-to-parametrization-from-one-test-to-many/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/87.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;There&#39;s a cool feature of pytest called parametrization.&lt;br&gt;&#xA;It&#39;s totally one of the superpowers of pytest.&lt;/p&gt;&#xA;&lt;p&gt;It&#39;s actually a handful of features, and there are a few ways to approach it.&lt;br&gt;&#xA;Parametrization is the ability to take one test, and send lots of different input datasets into the code under test, and maybe even have different output checks, all within the same test that you developed in the simple test case.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 86 - Teaching testing best practices with 4 testing maxims - Josh Peak</title>
      <link>https://pythontest.com/testandcode/episodes/86-teaching-testing-best-practices-with-4-testing-maxims-josh-peak/</link>
      <pubDate>Fri, 06 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/86-teaching-testing-best-practices-with-4-testing-maxims-josh-peak/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/86.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;You&#39;ve incorporated software testing into your coding practices and know from experience that it helps you get your stuff done faster with less headache.&lt;/p&gt;&#xA;&lt;p&gt;Awesome.&lt;/p&gt;&#xA;&lt;p&gt;Now your colleagues want in on that super power and want to learn testing.&lt;/p&gt;&#xA;&lt;p&gt;How do you help them? &lt;/p&gt;&#xA;&lt;p&gt;That&#39;s where Josh Peak is. He&#39;s helping his team add testing to their workflow to boost their productivity. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 85 - Speed Up Test Suites - Niklas Meinzer</title>
      <link>https://pythontest.com/testandcode/episodes/85-speed-up-test-suites-niklas-meinzer/</link>
      <pubDate>Mon, 26 Aug 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/85-speed-up-test-suites-niklas-meinzer/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/85.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Good software testing strategy is one of the best ways to save developer time and shorten software development delivery cycle time.&lt;/p&gt;&#xA;&lt;p&gt;Software test suites grow from small quick suites at the beginning of a project to larger suites as we add tests, and the time to run the suites grows with it.&lt;/p&gt;&#xA;&lt;p&gt;Fortunately, pytest has many tricks up it&#39;s sleave to help shorten those test suite times.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 84 - CircuitPython - Scott Shawcroft</title>
      <link>https://pythontest.com/testandcode/episodes/84-circuitpython-scott-shawcroft/</link>
      <pubDate>Tue, 20 Aug 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/84-circuitpython-scott-shawcroft/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/84.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Adafruit enables beginners to make amazing hardware/software projects.&lt;br&gt;&#xA;With CircuitPython, these projects can now use Python.&lt;/p&gt;&#xA;&lt;p&gt;The combination of Python&#39;s ease of use and Adafruit&#39;s super cool hardware and a focus on a successful beginner experience makes learning to write code that controls hardware super fun.&lt;/p&gt;&#xA;&lt;p&gt;In this episode, Scott Shawcroft, the project lead, talks about the past, present, and future of CircuitPython, and discusses the focus on the beginner.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 83 - PyBites Code Challenges behind the scenes - Bob Belderbos</title>
      <link>https://pythontest.com/testandcode/episodes/83-pybites-code-challenges-behind-the-scenes-bob-belderbos/</link>
      <pubDate>Fri, 16 Aug 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/83-pybites-code-challenges-behind-the-scenes-bob-belderbos/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/83.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Bob Belderbos and Julian Sequeira started &lt;a href=&#34;https://pybit.es/&#34; rel=&#34;nofollow&#34;&gt;PyBites&lt;/a&gt; a few years ago.&lt;br&gt;&#xA;They started doing code challanges along with people around the world and writing about it. &lt;/p&gt;&#xA;&lt;p&gt;Then came the &lt;a href=&#34;https://codechalleng.es/&#34; rel=&#34;nofollow&#34;&gt;codechalleng.es&lt;/a&gt; platform, where you can do code challenges in the browser and have your answer checked by pytest tests. But how does it all work?&lt;/p&gt;&#xA;&lt;p&gt;Bob joins me today to go behind the scenes and share the tech stack running the PyBites Code Challenges platform.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 82 - pytest - favorite features since 3.0 - Anthony Sottile</title>
      <link>https://pythontest.com/testandcode/episodes/82-pytest-favorite-features-since-3-0-anthony-sottile/</link>
      <pubDate>Wed, 31 Jul 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/82-pytest-favorite-features-since-3-0-anthony-sottile/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/82.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Anthony Sottile is a pytest core contributor, as well as a maintainer and contributor to &lt;br&gt;&#xA;many other projects. In this episode, Anthony shares some of the super cool features of pytest that have  been added since he started using it.&lt;/p&gt;&#xA;&lt;p&gt;We also discuss Anthony&#39;s move from user to contributor, and how others can help with the pytest project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 81 - TDD with flit</title>
      <link>https://pythontest.com/testandcode/episodes/81-tdd-with-flit/</link>
      <pubDate>Wed, 17 Jul 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/81-tdd-with-flit/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/81.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In the last episode, we talked about going from script to supported package. &lt;br&gt;&#xA;I worked on a project called subark and did the packaging with flit.&lt;/p&gt;&#xA;&lt;p&gt;Today&#39;s episode is a continuation where we add new features to a supported package and how to develop and test a flit based package.&lt;/p&gt;&#xA;&lt;p&gt;Covered:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;viewing stages of a project with git tags&lt;/li&gt;&#xA;&lt;li&gt;flit support for editable installs&lt;/li&gt;&#xA;&lt;li&gt;flit description entry in pyproject.toml to put README on pypi.&lt;/li&gt;&#xA;&lt;li&gt;development dependencies in pyproject.toml&lt;/li&gt;&#xA;&lt;li&gt;editor layout for optimal TDD-ing&lt;/li&gt;&#xA;&lt;li&gt;test case grouping&lt;/li&gt;&#xA;&lt;li&gt;modifications to traditional TDD that helps me develop faster.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;code and command snippets from episode:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 80 - From Python script to Maintainable Package</title>
      <link>https://pythontest.com/testandcode/episodes/80-from-python-script-to-maintainable-package/</link>
      <pubDate>Thu, 04 Jul 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/80-from-python-script-to-maintainable-package/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/80.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This episode is a story about packaging, and flit, tox, pytest, and coverage.&lt;br&gt;&#xA;And an alternate solution to &#34;using the src&#34;.&lt;/p&gt;&#xA;&lt;p&gt;Python makes it easy to build simple tools for all kinds of tasks.&lt;br&gt;&#xA;And it&#39;s great to be able to share small projects with others on your team, in your company, or with the world.&lt;/p&gt;&#xA;&lt;p&gt;When you want to take a script from &#34;just a script&#34; to maintainable package, there are a few steps, but none of it&#39;s hard.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 79 - Fixing misinformation about software testing</title>
      <link>https://pythontest.com/testandcode/episodes/79-fixing-misinformation-about-software-testing/</link>
      <pubDate>Thu, 27 Jun 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/79-fixing-misinformation-about-software-testing/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/79.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Some information about software testing is just wrong.&lt;br&gt;&#xA;I&#39;m not talking about opinions. I have lots of opinions and they differ from other peoples opinions. I&#39;m talking about misinformation and old information that is no longer applicable.&lt;/p&gt;&#xA;&lt;p&gt;I&#39;ve ran across a few lateley that I want to address.&lt;/p&gt;&#xA;&lt;p&gt;All of the following are wrong:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Integrated tests can&#39;t work. I can prove it with wacky math. &lt;/li&gt;&#xA;&lt;li&gt;Tests have to be blazing fast or they won&#39;t get run.&lt;/li&gt;&#xA;&lt;li&gt;TDD is about design, not about testing.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;This episode discusses why these are wrong.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 78 - I don&#39;t write tests because ...</title>
      <link>https://pythontest.com/testandcode/episodes/78-i-dont-write-tests-because/</link>
      <pubDate>Wed, 19 Jun 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/78-i-dont-write-tests-because/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/78.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Roadblocks to writing tests, and what to do about it.&lt;/p&gt;&#xA;&lt;p&gt;Some developers either don&#39;t write tests, or don&#39;t like writing tests.&lt;br&gt;&#xA;Why not? I love writing tests.&lt;br&gt;&#xA;In this episode we examine lots of roadblocks to testing, and start coming up with solutions for these.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://twitter.com/brianokken/status/1140041742864961536&#34; title=&#34;&#34; rel=&#34;nofollow&#34;&gt;&#34;I don’t write tests because ____. &#34; twitter question&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode/75&#34; title=&#34;episode 75: Modern Testing Principles&#34; rel=&#34;nofollow&#34;&gt;episode 75: Modern Testing Principles&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode/76&#34; title=&#34;episode 76: TDD: Don’t be afraid of Test-Driven Development &#34; rel=&#34;nofollow&#34;&gt;episode 76: TDD: Don’t be afraid of Test-Driven Development &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://twitter.com/brenankeller/status/1068615953989087232&#34; title=&#34;&#34; rel=&#34;nofollow&#34;&gt;&#34;A QA engineer walks into a bar&#34;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 77 - Testing Complex Systems with Maintainable Test Suites</title>
      <link>https://pythontest.com/testandcode/episodes/77-testing-complex-systems-with-maintainable-test-suites/</link>
      <pubDate>Tue, 11 Jun 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/77-testing-complex-systems-with-maintainable-test-suites/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/77.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Creating maintainable test suites for complex systems. The episode describes some complexities involved with hardware testing, then shares techniques for shifting complexity out of the test  cases.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;quick overview of what test instruments are&lt;/li&gt;&#xA;&lt;li&gt;discussion of API and communication with instruments&lt;/li&gt;&#xA;&lt;li&gt;techniques for shifting complexity out of test cases&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;These techniques should apply to all test suites dealing with complex systems:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 76 - TDD - Don’t be afraid of Test-Driven Development - Chris May</title>
      <link>https://pythontest.com/testandcode/episodes/76-tdd-don-t-be-afraid-of-test-driven-development-chris-may/</link>
      <pubDate>Wed, 29 May 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/76-tdd-don-t-be-afraid-of-test-driven-development-chris-may/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/76.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Test Driven Development, TDD, can be intimidating to try. &lt;br&gt;&#xA;Why is that? And how can we make it less scary? &lt;br&gt;&#xA;That&#39;s what this episode is about.&lt;/p&gt;&#xA;&lt;p&gt;Chris May is a Python developer and the co-founder of PyRVA, the Richmond Virginia Python group.&lt;br&gt;&#xA;In this episode, Chris shares his experience with adding testing and TDD to his work flow.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 75 - Modern Testing Principles - Alan Page</title>
      <link>https://pythontest.com/testandcode/episodes/75-modern-testing-principles-alan-page/</link>
      <pubDate>Thu, 23 May 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/75-modern-testing-principles-alan-page/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/75.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Software testing, if done right, is done all the time, throughout the whole life of a software project. This is different than the verification and validation of a classical model of QA teams. It&#39;s more of a collaborative model that actually tries to help get great software out the door faster and iterate quicker. &lt;/p&gt;&#xA;&lt;p&gt;One of the people at the forefront of this push is Alan Page. Alan and his podcast cohost Brent Jensen tried to boil down what modern testing looks like in the Modern Testing Principles.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 74 - Technical Interviews - Preparing For, What to Expect, and Tips for Success - Derrick Mar</title>
      <link>https://pythontest.com/testandcode/episodes/74-technical-interviews-preparing-for-what-to-expect-and-tips-for-success-derrick-mar/</link>
      <pubDate>Tue, 21 May 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/74-technical-interviews-preparing-for-what-to-expect-and-tips-for-success-derrick-mar/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/74.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In this episode, I talk with Derrick Mar, CTO and co-founder of Pathrise.&lt;br&gt;&#xA;This is the episode you need to listen to to get ready for software interviews.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;p&gt;We discuss four aspects of technical interviews that interviewers are looking for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;communication&lt;/li&gt;&#xA;&lt;li&gt;problem solving&lt;/li&gt;&#xA;&lt;li&gt;coding&lt;/li&gt;&#xA;&lt;li&gt;verification&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;p&gt;How to practice for the interview.&lt;/p&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;p&gt;Techniques for synchronizing with interviewer and asking for hints.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 73 - PyCon 2019 Live Recording</title>
      <link>https://pythontest.com/testandcode/episodes/73-pycon-2019-live-recording/</link>
      <pubDate>Fri, 03 May 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/73-pycon-2019-live-recording/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/73.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This is a &#34;Yay! It&#39;s PyCon 2019&#34; episode.&lt;br&gt;&#xA;PyCon is very important to me.&lt;br&gt;&#xA;But it&#39;s kinda hard to put a finger on why. &lt;br&gt;&#xA;So I figured I&#39;d ask more people to help explain why it&#39;s important.&lt;br&gt;&#xA;I ask a few simple questions to people about Python and PyCon and get some great insights into both the language popularity and the special place this conference holds to many people.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 72 - Technical Interview Fixes - April Wensel</title>
      <link>https://pythontest.com/testandcode/episodes/72-technical-interview-fixes-april-wensel/</link>
      <pubDate>Mon, 29 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/72-technical-interview-fixes-april-wensel/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/72.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Some typical technical interview practices can be harmful and get in the way of hiring great people. April Wensel offers advice to help fix the technical interview process.&lt;/p&gt;&#xA;&lt;p&gt;She recommends:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;hire for mindset and attitude&lt;/li&gt;&#xA;&lt;li&gt;look for empathy and mentorship skills&lt;/li&gt;&#xA;&lt;li&gt;allow candidates to show their strengths instead of hunting for weaknesses&lt;/li&gt;&#xA;&lt;li&gt;have the candidate leave feeling good about themselves and your company, regardless of the hiring decision&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Some topics discussed:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 71 - Memorable Tech Talks, The Ultimate Guide - Nina Zakharenko</title>
      <link>https://pythontest.com/testandcode/episodes/71-memorable-tech-talks-the-ultimate-guide-nina-zakharenko/</link>
      <pubDate>Fri, 05 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/71-memorable-tech-talks-the-ultimate-guide-nina-zakharenko/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/71.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Nina Zakharenko gives some great advice about giving tech talks.&lt;br&gt;&#xA;We talk about a blog series that Nina wrote called &#34;The Ultimate Guide To Memorable Tech Talks&#34;. This episode is full of great help and encouragement for your own public speaking adventures.&lt;/p&gt;&#xA;&lt;p&gt;Some of what we discuss:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;overcoming the fear of public speaking&lt;/li&gt;&#xA;&lt;li&gt;breathing and pausing during talks&lt;/li&gt;&#xA;&lt;li&gt;planning your talk as well as planning your time to get ready for the talk&lt;/li&gt;&#xA;&lt;li&gt;writing proposals and getting feedback on proposals&lt;/li&gt;&#xA;&lt;li&gt;Nina&#39;s talk in PyCascades on programming Adafruit chips&lt;/li&gt;&#xA;&lt;li&gt;types of talks that are often rejected&lt;/li&gt;&#xA;&lt;li&gt;pre-recording demos to avoid live demo problems&lt;/li&gt;&#xA;&lt;li&gt;why you should speak, even if you are an introvert&lt;/li&gt;&#xA;&lt;li&gt;benefits of public speaking&lt;/li&gt;&#xA;&lt;li&gt;a super cool announcement at the end&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;p&gt;Special Guest: Nina Zakharenko.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 70 - Learning Software without a CS degree - Dane Hillard</title>
      <link>https://pythontest.com/testandcode/episodes/70-learning-software-without-a-cs-degree-dane-hillard/</link>
      <pubDate>Fri, 29 Mar 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/70-learning-software-without-a-cs-degree-dane-hillard/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/70.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Dane and Brian discuss skills needed for people that become software developers from non-traditional paths.&lt;/p&gt;&#xA;&lt;p&gt;Dane is also writing a book to address many of these skill gaps, &lt;a href=&#34;https://www.manning.com/books/code-like-a-pro&#34; rel=&#34;nofollow&#34;&gt;Code Like a Pro&lt;/a&gt;, that&#39;s currently in an early access phase. Use code podtest&amp;code19 to get a discount. And, sign up as a &lt;a href=&#34;https://pythontest.com/testandcode/friends-of-the-show&#34; rel=&#34;nofollow&#34;&gt;Friend of the Show&lt;/a&gt; to enter for a chance to win a free copy of the eBook version.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 69 - Andy Hunt - The Pragmatic Programmer</title>
      <link>https://pythontest.com/testandcode/episodes/69-andy-hunt-the-pragmatic-programmer/</link>
      <pubDate>Thu, 21 Mar 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/69-andy-hunt-the-pragmatic-programmer/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/69.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Andy Hunt and Dave Thomas wrote the seminal software development book, The Pragmatic Programmer. Together they founded The Pragmatic Programmers and are well known as founders of the agile movement and authors of the Agile Manifesto. They founded the Pragmatic Bookshelf publishing business in 2003. &lt;/p&gt;&#xA;&lt;p&gt;The Pragmatic Bookshelf published it&#39;s most important book, in my opinion, in 2017 with the first &lt;a href=&#34;https://pragprog.com/book/bopytest/python-testing-with-pytest&#34; rel=&#34;nofollow&#34;&gt;pytest book&lt;/a&gt; available from any publisher.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 68 - test and commit or revert (TCR) - Thomas Deniffel</title>
      <link>https://pythontest.com/testandcode/episodes/68-test-commit-revert-tcr-thomas-deniffel/</link>
      <pubDate>Tue, 12 Mar 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/68-test-commit-revert-tcr-thomas-deniffel/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/68.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;With conventional TDD, you write a failing test, get it to pass, then refactor.&lt;br&gt;&#xA;Then run the tests again to make sure your refactoring didn&#39;t break anything.&lt;br&gt;&#xA;But what if it did break something? &lt;br&gt;&#xA;Kent Beck has been recommending to commit your code to revision control after every green test run.&lt;br&gt;&#xA;Oddmund Strømme suggested a symmetrical idea to go ahead and revert the code when a test fails.&lt;br&gt;&#xA;Kent writes that he hated the idea, but had to try it.&lt;br&gt;&#xA;Then wrote about it last September.&lt;br&gt;&#xA;And now we have TCR, &#34;(test &amp;&amp; commit) || revert&#34;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 67 - Teaching Python in Middle School</title>
      <link>https://pythontest.com/testandcode/episodes/67-teaching-python-in-middle-school/</link>
      <pubDate>Thu, 28 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/67-teaching-python-in-middle-school/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/67.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In today&#39;s episode we talk with Kelly Paredes &amp; Sean Tibor. &lt;br&gt;&#xA;They teach Python in a middle school in Florida, and talk about this experience on the podcast &#34;Teaching Python&#34;.&lt;/p&gt;&#xA;&lt;p&gt;I love that they include physical computing right from the start, and everything else they are doing.&lt;/p&gt;&#xA;&lt;p&gt;It&#39;s a fun interview.&lt;/p&gt;&lt;p&gt;Special Guests: Kelly Paredes and Sean Tibor.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 66 - Brian is interviewed by Phil Burgess</title>
      <link>https://pythontest.com/testandcode/episodes/66-brian-is-interviewed-by-phil-burgess/</link>
      <pubDate>Tue, 26 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/66-brian-is-interviewed-by-phil-burgess/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/66.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I was recently interviewed on a podcast called &#34;IT Career Energizer Podcast&#34;.&lt;br&gt;&#xA;Phil Burgess is the host of the podcast, and it was a lot of fun.&lt;/p&gt;&#xA;&lt;p&gt;I think it turned out well, and I wanted to share it with you here, with Phil&#39;s permission, of course.&lt;/p&gt;&lt;p&gt;Special Guest: Phil Burgess.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://itcareerenergizer.com/&#34; title=&#34;IT Career Energizer Podcast&#34; rel=&#34;nofollow&#34;&gt;IT Career Energizer Podcast&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 65 - one assert per test</title>
      <link>https://pythontest.com/testandcode/episodes/65-one-assert-per-test/</link>
      <pubDate>Sun, 17 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/65-one-assert-per-test/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/65.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Is it ok to have more than one assert statement in a test? &lt;br&gt;&#xA;I&#39;ve seen articles that say no, you should never have more than one assert.&lt;br&gt;&#xA;I&#39;ve also seen some test code made almost unreadable due to trying to avoid more than one assert per test.&lt;/p&gt;&#xA;&lt;p&gt;Where did this recommendation even come from? What are the reasons? &lt;br&gt;&#xA;What are the downsides to both perspectives?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 64 - Practicing Programming to increase your value</title>
      <link>https://pythontest.com/testandcode/episodes/64-practicing-programming-to-increase-your-value/</link>
      <pubDate>Thu, 07 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/64-practicing-programming-to-increase-your-value/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/64.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I want you to get the most out of being a software developer, or test engineer, or whatever you do that makes this podcast relevant to your life.&lt;/p&gt;&#xA;&lt;p&gt;By &#34;get the most&#34; I mean:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;the most fun&lt;/li&gt;&#xA;&lt;li&gt;the most value&lt;/li&gt;&#xA;&lt;li&gt;more career options&lt;/li&gt;&#xA;&lt;li&gt;probably more responsibility&lt;/li&gt;&#xA;&lt;li&gt;maybe even more money, that&#39;d be cool&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I want you to start (or continue) studying and practicing your skills.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 63 - Python Corporate Training - Matt Harrison</title>
      <link>https://pythontest.com/testandcode/episodes/63-python-corporate-training-matt-harrison/</link>
      <pubDate>Thu, 31 Jan 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/63-python-corporate-training-matt-harrison/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/63.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;I hear and I forget.&lt;/em&gt;&lt;br&gt;&#xA;&lt;em&gt;I see and I remember.&lt;/em&gt;&lt;br&gt;&#xA;&lt;em&gt;I do and I understand.&lt;/em&gt;&lt;br&gt;&#xA;&lt;em&gt;-- Confucius&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Matt Harrison is an author and instructor of Python and Data Science. This episode focuses on his training company, MetaSnake, and corporate training.&lt;/p&gt;&#xA;&lt;p&gt;Matt&#39;s written several books on Python, mostly self published. So of course we talk about that.&lt;/p&gt;&#xA;&lt;p&gt;But the bulk of the conversation is about corporate training, with Brian playing the role of someone considering starting a corporate training role, and asking Matt, an experienced expert in training, how to start and where to go from there.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 62 - Python Training - Reuven Lerner</title>
      <link>https://pythontest.com/testandcode/episodes/62-python-training-reuven-lerner/</link>
      <pubDate>Sat, 12 Jan 2019 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/62-python-training-reuven-lerner/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/62.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;There are a lot of learning styles and a lot of ways to learn Python. If you started Python through a class at work, or through an online course, or maybe an email series, it&#39;s possibly you may have learned from Reuven Lerner.&lt;/p&gt;&#xA;&lt;p&gt;If your first encounter with pytest was reading an article in Linux Journal recently, that would be the writing of Reuven. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 61 - A retrospective</title>
      <link>https://pythontest.com/testandcode/episodes/a-retrospective/</link>
      <pubDate>Mon, 31 Dec 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/a-retrospective/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/61.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A look back on 3 years of podcasting, and a bit of a look forward to what to expect in 2019.&lt;/p&gt;&#xA;&lt;p&gt;Top 5 episodes:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode/2&#34; rel=&#34;nofollow&#34;&gt;2: Pytest vs Unittest vs Nose&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode/33&#34; rel=&#34;nofollow&#34;&gt;33: Katharine Jarmul - Testing in Data Science&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode/18&#34; rel=&#34;nofollow&#34;&gt;18: Testing in Startups and Hiring Software Engineers with Joe Stump&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode45&#34; rel=&#34;nofollow&#34;&gt;45: David Heinemeier Hansson - Software Development and Testing, TDD, and exploratory QA&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode/27&#34; rel=&#34;nofollow&#34;&gt;27: Mahmoud Hashemi : unit, integration, and system testing&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Honorable mention: &lt;a href=&#34;https://pythontest.com/testandcode/32&#34; rel=&#34;nofollow&#34;&gt;32: David Hussman - Agile vs Agility, Dude&#39;s Law, and more&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 60 - 100 Days of Code - Julian Sequeira</title>
      <link>https://pythontest.com/testandcode/episodes/100-days-of-code-julian-sequeira/</link>
      <pubDate>Fri, 28 Dec 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/100-days-of-code-julian-sequeira/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/60.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Julian Sequeira is Co-Founder of PyBit.es (a blog/platform created to teach and learn Python) and a Python Trainer at Talk Python Training.&lt;br&gt;&#xA;He&#39;s also a survivor of the 100DaysOfCode in Python Challenge.&lt;/p&gt;&#xA;&lt;p&gt;We talk about the 100 days challenge, about learning Python, and about how cool it is to learn within a community.&lt;/p&gt;&lt;p&gt;Special Guest: Julian Sequeira.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 59 - Genesynth, nox, urllib3, and PyCascades - Thea Flowers</title>
      <link>https://pythontest.com/testandcode/episodes/genesynth-nox-urllib3-pycascades-thea-flowers/</link>
      <pubDate>Fri, 21 Dec 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/genesynth-nox-urllib3-pycascades-thea-flowers/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/59.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Thea Flowers is a Pythonista and open source advocate. She helps empower developers of all backgrounds and experience levels using Python and open source software and hardware.&lt;/p&gt;&#xA;&lt;p&gt;Thea is the creator of Nox, the co-chair of PyCascades 2019, the lead maintainer of urllib3, and a member of the Python Packaging Authority and Packaging Working Group.&lt;/p&gt;&#xA;&lt;p&gt;Thea works on Google Cloud Platform&#39;s wonderful Developer Relations team where she works on API client libraries and community outreach.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 58 - REST APIs, testing with Docker containers and pytest</title>
      <link>https://pythontest.com/testandcode/episodes/rest-apis-testing-with-docker-containers-and-pytest/</link>
      <pubDate>Fri, 14 Dec 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/rest-apis-testing-with-docker-containers-and-pytest/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/58.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Let&#39;s say you&#39;ve got a web application you need to test.&lt;br&gt;&#xA;It has a REST API that you want to use for testing.  &lt;/p&gt;&#xA;&lt;p&gt;Can you use Python for this testing even if the application is written in some other language? Of course.&lt;br&gt;&#xA;Can you use pytest? duh. yes. what else?&lt;br&gt;&#xA;What if you want to spin up docker instances, get your app running in that, and run your tests against that environment? &lt;br&gt;&#xA;How would you use pytest to do that?&lt;br&gt;&#xA;Well, there, I&#39;m not exactly sure. But I know someone who does.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 57 - What is Data Science? - Vicki Boykis</title>
      <link>https://pythontest.com/testandcode/episodes/what-is-data-science-vicki-boykis/</link>
      <pubDate>Tue, 11 Dec 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/what-is-data-science-vicki-boykis/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/57.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Data science, data engineering, data analysis, and machine learning are part of the recent massive growth of Python. &lt;/p&gt;&#xA;&lt;p&gt;But really what is data science? &lt;/p&gt;&#xA;&lt;p&gt;Vicki Boykis helps me understand questions like:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;No really, what is data science?&lt;/li&gt;&#xA;&lt;li&gt;What does a data pipeline look like?&lt;/li&gt;&#xA;&lt;li&gt;What is it like to do data science, data analysis, data engineering?&lt;/li&gt;&#xA;&lt;li&gt;Can you do analysis on a laptop?&lt;/li&gt;&#xA;&lt;li&gt;How big does data have to be to be considered big?&lt;/li&gt;&#xA;&lt;li&gt;What are the challenges in data science?&lt;/li&gt;&#xA;&lt;li&gt;Does it make sense for software engineers to learn data engineering, data science, pipelines, etc?&lt;/li&gt;&#xA;&lt;li&gt;How could someone start learning data science?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Also covered:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 56 - Being a Guest on a Podcast - Michael Kennedy</title>
      <link>https://pythontest.com/testandcode/episodes/being-a-guest-on-a-podcast-michael-kennedy/</link>
      <pubDate>Fri, 07 Dec 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/being-a-guest-on-a-podcast-michael-kennedy/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/56.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Michael Kennedy of Talk Python and Python Bytes fame joins Brian to talk about being a great guest and what to expect. &lt;/p&gt;&#xA;&lt;p&gt;Even if you have never wanted to be on a podcast, you might learn some great tips. A few of the things we talk about will be helpful for other endeavors, like public speaking, guest blog posts, look for unsolicited job opportunities. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 55 - When 100% test coverage just isn&#39;t enough - Mahmoud Hashemi</title>
      <link>https://pythontest.com/testandcode/episodes/55-when-100-test-coverage-just-isnt-enough-mahmoud-hashemi/</link>
      <pubDate>Mon, 03 Dec 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/55-when-100-test-coverage-just-isnt-enough-mahmoud-hashemi/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/55.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;What happens when 100% test code coverage just isn&#39;t enough.&lt;br&gt;&#xA;In this episode, we talk with Mahmoud Hashemi about glom, a very cool project in itself, but a project that needs more coverage than 100%.&lt;br&gt;&#xA;This problem affects lots of projects that use higher level programming constructs, like domain specific languages (DSLs), sub languages mini languages, compilers, and db query languages.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 54 - Python 1994 - Paul Everitt</title>
      <link>https://pythontest.com/testandcode/episodes/54-python-1994-paul-everitt/</link>
      <pubDate>Sun, 25 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/54-python-1994-paul-everitt/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/54.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Paul talks about the beginning years of Python.&lt;br&gt;&#xA;Talking about Python&#39;s beginnings is also talking about the Python community beginnings.&lt;br&gt;&#xA;Yes, it&#39;s reminiscing, but it&#39;s fun.&lt;/p&gt;&lt;p&gt;Special Guest: Paul Everitt.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=iOUrf7WSSLc&#34; title=&#34;Python 1994 Panel Discussion PyCon 2017&#34; rel=&#34;nofollow&#34;&gt;Python 1994 Panel Discussion PyCon 2017&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=7NrPCsH0mBU&#34; title=&#34;&#34; rel=&#34;nofollow&#34;&gt;&#34;Python 1994&#34;, PyBay2017&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=anwy2MPT5RE&#34; title=&#34;Spam, Spam, Spam, ...&#34; rel=&#34;nofollow&#34;&gt;Spam, Spam, Spam, ...&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 53 - Seven Databases in Seven Weeks - Luc Perkins</title>
      <link>https://pythontest.com/testandcode/episodes/53-seven-databases-in-seven-weeks-luc-perkins/</link>
      <pubDate>Sun, 18 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/53-seven-databases-in-seven-weeks-luc-perkins/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/53.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Luc Perkins joins the show to talk about &#34;Seven Databases in Seven Weeks: A guide to modern databases and the NoSQL movement.&#34;&lt;/p&gt;&#xA;&lt;p&gt;We discuss a bit about each database:  Redis, Neo4J, CouchDB, MongoDB, HBase, Postgres, and DynamoDB.&lt;/p&gt;&lt;p&gt;Special Guest: Luc Perkins.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://7dbs.io/&#34; title=&#34;Seven Databases in Seven Weeks, Second Edition: A Guide to Modern Databases and the NoSQL Movement&#34; rel=&#34;nofollow&#34;&gt;Seven Databases in Seven Weeks, Second Edition: A Guide to Modern Databases and the NoSQL Movement&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.postgresql.org/&#34; title=&#34;PostgreSQL&#34; rel=&#34;nofollow&#34;&gt;PostgreSQL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://redis.io/&#34; title=&#34;Redis&#34; rel=&#34;nofollow&#34;&gt;Redis&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://neo4j.com/&#34; title=&#34;Neo4j Graph Database&#34; rel=&#34;nofollow&#34;&gt;Neo4j Graph Database&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://couchdb.apache.org/&#34; title=&#34;CouchDB&#34; rel=&#34;nofollow&#34;&gt;CouchDB&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.mongodb.com/&#34; title=&#34;MongoDB&#34; rel=&#34;nofollow&#34;&gt;MongoDB&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://hbase.apache.org/&#34; title=&#34;HBase&#34; rel=&#34;nofollow&#34;&gt;HBase&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/dynamodb/&#34; title=&#34;DynamoDB&#34; rel=&#34;nofollow&#34;&gt;DynamoDB&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 52 - pyproject.toml - the future of Python packaging - Brett Cannon</title>
      <link>https://pythontest.com/testandcode/episodes/52-pyproject-toml-the-future-of-python-packaging-brett-cannon/</link>
      <pubDate>Mon, 05 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/52-pyproject-toml-the-future-of-python-packaging-brett-cannon/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/52.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Brett Cannon discusses the changes afoot in Python packaging as a result of PEP 517, PEP 518, starting with &#34;How did we get here?&#34; and &#34;Where are we going?&#34;&lt;/p&gt;&#xA;&lt;p&gt;Discussed:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;flit&lt;/li&gt;&#xA;&lt;li&gt;Poetry&lt;/li&gt;&#xA;&lt;li&gt;tox&lt;/li&gt;&#xA;&lt;li&gt;Continuous Integration&lt;/li&gt;&#xA;&lt;li&gt;setup.py, MANIFEST.in, etc.&lt;/li&gt;&#xA;&lt;li&gt;pipenv&lt;/li&gt;&#xA;&lt;li&gt;what&#39;s with lock files&lt;/li&gt;&#xA;&lt;li&gt;applications (doesn&#39;t go on PyPI) vs libraries (goes on PyPI)&lt;/li&gt;&#xA;&lt;li&gt;workflows&lt;/li&gt;&#xA;&lt;li&gt;dependency resolution&lt;/li&gt;&#xA;&lt;li&gt;deployment dependencies vs development dependencies&lt;/li&gt;&#xA;&lt;li&gt;will lock files be standarized&lt;/li&gt;&#xA;&lt;li&gt;multiple lock files&lt;/li&gt;&#xA;&lt;li&gt;requirements.txt&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;p&gt;Special Guest: Brett Cannon.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 51 - Feature Testing</title>
      <link>https://pythontest.com/testandcode/episodes/51-feature-testing/</link>
      <pubDate>Tue, 30 Oct 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/51-feature-testing/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/51.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Andy Knight joins me in discussing the concept of feature testing.&lt;/p&gt;&#xA;&lt;p&gt;A feature tests is &#34;a test verifying a service or library as the customer would use it, but within a single process.&#34; That was a quote from an article that appeared on the Twitter engineering blog. The article describes a shift away from class tests towards feature tests, the benefits of the shift, and some reactions to it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 50 - Flaky Tests and How to Deal with Them</title>
      <link>https://pythontest.com/testandcode/episodes/50-flaky-tests-and-how-to-deal-with-them/</link>
      <pubDate>Thu, 25 Oct 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/50-flaky-tests-and-how-to-deal-with-them/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/50.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Anthony Shaw joins Brian to discuss flaky tests and flaky test suites.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;What are flaky tests?&lt;/li&gt;&#xA;&lt;li&gt;Is it the same as fragile tests?&lt;/li&gt;&#xA;&lt;li&gt;Why are they bad?&lt;/li&gt;&#xA;&lt;li&gt;How do we deal with them?&lt;/li&gt;&#xA;&lt;li&gt;What causes flakiness?&lt;/li&gt;&#xA;&lt;li&gt;How can we fix them?&lt;/li&gt;&#xA;&lt;li&gt;How can we avoid them?&lt;/li&gt;&#xA;&lt;li&gt;Proactively rooting out flakiness&lt;/li&gt;&#xA;&lt;li&gt;Test design&lt;/li&gt;&#xA;&lt;li&gt;GUI tests&lt;/li&gt;&#xA;&lt;li&gt;Sharing solutions&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;p&gt;Special Guest: Anthony Shaw.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 49 - tox - Oliver Bestwalter</title>
      <link>https://pythontest.com/testandcode/episodes/49-tox-oliver-bestwalter/</link>
      <pubDate>Mon, 15 Oct 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/49-tox-oliver-bestwalter/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/49.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;tox is a simple yet powerful tool that is used by many Python projects.&lt;/p&gt;&#xA;&lt;p&gt;tox is not just a tool to help you test a Python project against multiple versions of Python. In this interview, Oliver and Brian just scratch the surface of this simple yet powerful automation tool.&lt;/p&gt;&#xA;&lt;p&gt;This is from the tox documentation:&lt;/p&gt;&#xA;&lt;p&gt;tox is a generic virtualenv management and test command line tool you can use for:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 48 - A GUI for pytest</title>
      <link>https://pythontest.com/testandcode/episodes/48-a-gui-for-pytest/</link>
      <pubDate>Sun, 07 Oct 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/48-a-gui-for-pytest/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/48.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The story of how I came to find a good user interface for running and debugging automated tests is interleaved with a multi-year effort of mine to have a test workflow that’s works smoothly with product development and actually speeds things up. It’s also interleaved with the origins of  the blog pythontesting.net, this podcast, and the pytest book I wrote with Pragmatic.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 47 - Automation Panda - Andy Knight</title>
      <link>https://pythontest.com/testandcode/episodes/47-automation-panda-andy-knight/</link>
      <pubDate>Fri, 28 Sep 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/47-automation-panda-andy-knight/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/47.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Interview with Andy Knight, the Automation Panda. &lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Selenium &amp; WebDriver&lt;/li&gt;&#xA;&lt;li&gt;Headless Chrome&lt;/li&gt;&#xA;&lt;li&gt;Gherkin&lt;/li&gt;&#xA;&lt;li&gt;BDD&lt;/li&gt;&#xA;&lt;li&gt;Given When Then&lt;/li&gt;&#xA;&lt;li&gt;pytest-bdd&lt;/li&gt;&#xA;&lt;li&gt;PyCharm&lt;/li&gt;&#xA;&lt;li&gt;Writing Good Gherkin&lt;/li&gt;&#xA;&lt;li&gt;Overhead of Gherkin and if it&#39;s worth it&lt;/li&gt;&#xA;&lt;li&gt;When to use pytest vs pytest-bdd&lt;/li&gt;&#xA;&lt;li&gt;The art of test automation&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;p&gt;Special Guest: Andy Knight.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://automationpanda.com/&#34; title=&#34;Automation Panda | A blog for software development and testing&#34; rel=&#34;nofollow&#34;&gt;Automation Panda | A blog for software development and testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/intuit/karate&#34; title=&#34;Karate REST API test framework&#34; rel=&#34;nofollow&#34;&gt;Karate REST API test framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://automationpanda.com/bdd/&#34; title=&#34;BDD | Automation Panda&#34; rel=&#34;nofollow&#34;&gt;BDD | Automation Panda&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://automationpanda.com/testing/&#34; title=&#34;Testing | Automation Panda&#34; rel=&#34;nofollow&#34;&gt;Testing | Automation Panda&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://amzn.to/2IqkJZO&#34; title=&#34;The pytest Book&#34; rel=&#34;nofollow&#34;&gt;The pytest Book&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 46 - Testing Hard To Test Applications - Anthony Shaw</title>
      <link>https://pythontest.com/testandcode/episodes/46-testing-hard-to-test-applications-anthony-shaw/</link>
      <pubDate>Sun, 02 Sep 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/46-testing-hard-to-test-applications-anthony-shaw/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/46.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;How do you write tests for things that aren’t that easy to write tests for?&lt;/p&gt;&#xA;&lt;p&gt;That question is a possibly terrible summary of a question sent to me by a listener. And to help me start answering that question, I asked a friend of mine to help, Antony Shaw.&lt;/p&gt;&#xA;&lt;p&gt;Of course, different types of applications have different test strategies, so there’s not a universal answer. But I know some of you out there have experience and expertise around how to tackle this problem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 45 - David Heinemeier Hansson - Software Development and Testing, TDD, and exploratory QA</title>
      <link>https://pythontest.com/testandcode/episodes/45-david-heinemeier-hansson-software-development-and-testing-tdd-and-exploratory-qa/</link>
      <pubDate>Mon, 13 Aug 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/45-david-heinemeier-hansson-software-development-and-testing-tdd-and-exploratory-qa/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/45.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;David Heinemeier Hansson is the creator of Ruby on Rails, founder &amp; CTO at Basecamp (formerly 37signals). He&#39;s a best selling author, public speaker, and even a Le Mans class winning racing driver. &lt;/p&gt;&#xA;&lt;p&gt;All of that, of course, is awesome. But that&#39;s not why I asked him on the show. In 2014, during a RailsConf keynote, he started a discussion about damage caused by TDD. This was followed by a few blog posts, and then a series of recorded hangouts with Martin Fowler and Kent Beck. This is what I wanted to talk with David about; this unconventional yet practical and intuitive view of how testing and development work together. &lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 44 - Mentoring - Nina Zakharenko</title>
      <link>https://pythontest.com/testandcode/episodes/44-mentoring-nina-zakharenko/</link>
      <pubDate>Sat, 21 Jul 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/44-mentoring-nina-zakharenko/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/44.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Nina Zakharenko is a cloud developer advocate at Microsoft focusing on Python. She&#39;s also an excellent public speaker. We talk about her experience with mentoring, both being a mentor, and utilizing mentors. We also talk about public speaking, her move to Microsoft, and to Portland, and the Microsoft/GitHub merge.&lt;/p&gt;&lt;p&gt;Special Guest: Nina Zakharenko.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://www.recurse.com/&#34; title=&#34;The Recurse Center&#34; rel=&#34;nofollow&#34;&gt;The Recurse Center&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://hackernoon.com/the-best-career-advice-ive-received-so-far-is-never-turn-down-an-interview-7586ca5b7ef8&#34; title=&#34;Why I joined Microsoft – Hacker Noon&#34; rel=&#34;nofollow&#34;&gt;Why I joined Microsoft – Hacker Noon&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://getbootstrap.com/&#34; title=&#34;Bootstrap · The most popular HTML, CSS, and JS library in the world.&#34; rel=&#34;nofollow&#34;&gt;Bootstrap · The most popular HTML, CSS, and JS library in the world.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://twitter.com/holtbt/status/977419276251430912&#34; title=&#34;Brian Holt on Twitter: &#34; rel=&#34;nofollow&#34;&gt;Brian Holt on Twitter: &#34;“Fullstack” developer.… &#34;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 44 - Preparing for Technical Talks with Kelsey Hightower - bonus episode</title>
      <link>https://pythontest.com/testandcode/episodes/preparing-for-technical-talks-with-kelsey-hightower-bonus-episode/</link>
      <pubDate>Mon, 16 Jul 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/preparing-for-technical-talks-with-kelsey-hightower-bonus-episode/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/44.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;After I had wrapped up the interview with &lt;a href=&#34;http://pythontest.com/testandcode/43&#34; rel=&#34;nofollow&#34;&gt;Kelsey Hightower for episode 43&lt;/a&gt;, I asked him one last question.&lt;/p&gt;&#xA;&lt;p&gt;You see, I admire the his presentation style. &lt;br&gt;&#xA;So I asked him if he would share with me how he prepared for his presentations.&lt;/p&gt;&#xA;&lt;p&gt;His answer is so thoughtful and makes so much sense, I couldn&#39;t keep it to myself.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 43 - Kelsey Hightower - End to End and Integration Testing</title>
      <link>https://pythontest.com/testandcode/episodes/43-kelsey-hightower-end-to-end-integration-testing/</link>
      <pubDate>Thu, 05 Jul 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/43-kelsey-hightower-end-to-end-integration-testing/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/43.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I first heard Kelsey speak during his 2017 PyCon keynote.&lt;br&gt;&#xA;He&#39;s an amazing speaker, and I knew right then I wanted to hear more about what he does and hear more of his story. &lt;/p&gt;&#xA;&lt;p&gt;We discuss testing, of course, but we take it further and discuss:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;tests for large systems, like kubernetes&lt;/li&gt;&#xA;&lt;li&gt;Testing in real world scenarios with all the configuration and everything&lt;/li&gt;&#xA;&lt;li&gt;Becoming a complete engineer by thinking about the end to end flow from the users perspective&lt;/li&gt;&#xA;&lt;li&gt;Learning from other roles, and the value of roles to allow focus and expertise&lt;/li&gt;&#xA;&lt;li&gt;We even get into Chaos Engineering and testing live systems.&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;p&gt;Special Guest: Kelsey Hightower.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 42 - Using Automated Tests to Help Teach Python - Trey Hunner</title>
      <link>https://pythontest.com/testandcode/episodes/42-using-automated-tests-to-help-teach-python-trey-hunner/</link>
      <pubDate>Wed, 27 Jun 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/42-using-automated-tests-to-help-teach-python-trey-hunner/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/42.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This interview with Trey Hunner discusses his use of automated tests to help teach programming.&lt;/p&gt;&#xA;&lt;p&gt;Automated testing is a huge part of developing great software. But many new developers don&#39;t get exposed to testing for quite a while. But this is changing.&lt;/p&gt;&#xA;&lt;p&gt;New ways to teach programming include automated tests from the beginning.&lt;/p&gt;&#xA;&lt;p&gt;Trey Hunner is one of the PSF directors and a Python and Django team trainer, and he has been using automated tests to help people learn Python.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 41 - Testing in DevOps and Agile - Anthony Shaw</title>
      <link>https://pythontest.com/testandcode/episodes/41-testing-in-devops-and-agile-anthony-shaw/</link>
      <pubDate>Wed, 18 Apr 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/41-testing-in-devops-and-agile-anthony-shaw/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/41.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;We talk with Anthony Shaw about some of the testing problems facing both DevOps teams, and Agile teams. We also talk about his recent pull request accepted into pytest.&lt;/p&gt;&lt;p&gt;Special Guest: Anthony Shaw.&lt;/p&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://tonybaloney.github.io/&#34; title=&#34;Anthony Shaw on github.io&#34; rel=&#34;nofollow&#34;&gt;Anthony Shaw on github.io&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/pytest-dev/pytest/pull/3331&#34; title=&#34;Support for the new builtin breakpoint function in Python 3.7 by tonybaloney · Pull Request #3331 · pytest-dev/pytest&#34; rel=&#34;nofollow&#34;&gt;Support for the new builtin breakpoint function in Python 3.7 by tonybaloney · Pull Request #3331 · pytest-dev/pytest&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 40 - On Podcasting - Adam Clark</title>
      <link>https://pythontest.com/testandcode/episodes/40-on-podcasting-adam-clark/</link>
      <pubDate>Tue, 10 Apr 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/40-on-podcasting-adam-clark/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/40.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Adam is the host of &lt;a href=&#34;https://thegentlymad.com/&#34; rel=&#34;nofollow&#34;&gt;The Gently Mad&lt;/a&gt; podcast, and teaches the steps in creating and growing a podcast in his course &lt;a href=&#34;https://irresistiblepodcasting.com&#34; rel=&#34;nofollow&#34;&gt;Irresistible Podcasting&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;He was one of the people who inspired Brian to get the Test &amp; Code podcast started in the first place. Brian took his course in 2015. Adam is in the process of updating the course, and building a community around it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 39 - Thorough software testing for critical features</title>
      <link>https://pythontest.com/testandcode/episodes/39-thorough-software-testing-for-critical-features/</link>
      <pubDate>Thu, 29 Mar 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/39-thorough-software-testing-for-critical-features/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/39.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Complete and exhaustive testing is not possible. Nor would it be fun, or maintainable, or a good use of your time.&lt;/p&gt;&#xA;&lt;p&gt;However, some functionality is important enough to make sure the test behavior coverage is thorough enough to have high confidence in it&#39;s quality.&lt;/p&gt;&#xA;&lt;p&gt;In this episode, we discuss 3 techniques that can be combined to quickly generate test cases. We then talk about how to implement them efficiently in pytest.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 38 - Prioritize software tests with RCRCRC</title>
      <link>https://pythontest.com/testandcode/episodes/38-prioritize-software-tests-with-rcrcrc/</link>
      <pubDate>Tue, 13 Mar 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/38-prioritize-software-tests-with-rcrcrc/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/38.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;RCRCRC was developed by Karen Nicole Johnson.&lt;/p&gt;&#xA;&lt;p&gt;In this episode we discuss the mnemonic/heuristic and use it to prioritize tests for the cards application.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Recent: new features, new areas of code&lt;/li&gt;&#xA;&lt;li&gt;Core: essential functions must continue to work, your products USPs (Unique Selling Propositions)&lt;/li&gt;&#xA;&lt;li&gt;Risk: some areas of an application pose more risk, perhaps areas important to customers but not used regularly by the development team.&lt;/li&gt;&#xA;&lt;li&gt;Configuration sensitive: code that’s dependent on environment settings or operating system specifics&lt;/li&gt;&#xA;&lt;li&gt;Repaired: tests to reproduce bugs, tests for functionality that has been recently repaired.&lt;/li&gt;&#xA;&lt;li&gt;Chronic: functionality that frequently breaks&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;p&gt;Links:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 37 - What tests to write first</title>
      <link>https://pythontest.com/testandcode/episodes/37-what-tests-to-write-first/</link>
      <pubDate>Thu, 08 Mar 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/37-what-tests-to-write-first/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/37.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This episode starts down the path of test strategy with the first tests to write in either a legacy system or a project just getting off it&#39;s feet.&lt;/p&gt;&#xA;&lt;p&gt;We cover:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;My approach to testing existing systems.&lt;/li&gt;&#xA;&lt;li&gt;Put names to strategies so we can refer to them later.&lt;/li&gt;&#xA;&lt;li&gt;Explain the strategies in general terms and explain why they are useful.&lt;/li&gt;&#xA;&lt;li&gt;Discuss how these strategies are used in an example project. (The code is available on github).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Strategies covered today:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 36 - Stephanie Hurlburt - Mentoring and Open Office Hours</title>
      <link>https://pythontest.com/testandcode/episodes/36-stephanie-hurlburt-mentoring-and-open-office-hours/</link>
      <pubDate>Tue, 13 Feb 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/36-stephanie-hurlburt-mentoring-and-open-office-hours/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/36.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Stephanie is a co-founder and graphics engineer at Binomial.&lt;/p&gt;&#xA;&lt;p&gt;She works on Basis, an image compressor, and has customers in games, video, mapping, and any application that has lots of image data.&lt;/p&gt;&#xA;&lt;p&gt;Stephanie has also been encouraging experienced engineers to open up their twitter DMs to questions from anyone, to help mentor people not only in technical questions, but in career questions as well.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 35 - Continuing Education and Certificate Programs at UW</title>
      <link>https://pythontest.com/testandcode/episodes/35-continuing-education-and-certificate-programs-at-uw/</link>
      <pubDate>Thu, 01 Feb 2018 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/35-continuing-education-and-certificate-programs-at-uw/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/35.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;There are lots of ways to up your skills.&lt;br&gt;&#xA;Of course, I&#39;m a big fan of learning through reading books, such as upping your testing skills by reading Python Testing with pytest.&lt;br&gt;&#xA;And then there are online learning systems and MOOCs.&lt;/p&gt;&#xA;&lt;p&gt;At the other end of the spectrum is a full blown university degree.&lt;/p&gt;&#xA;&lt;p&gt;One option kind of in the middle is continuing education programs available through some universities, such as University of Washington.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 34 - TDD and Test First</title>
      <link>https://pythontest.com/testandcode/episodes/34-tdd-and-test-first/</link>
      <pubDate>Sun, 31 Dec 2017 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/34-tdd-and-test-first/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/34.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;An in depth discussion of Test Driven Development (TDD) should include a discussion of Test First. So that&#39;s where we start.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Why write tests first?&lt;/li&gt;&#xA;&lt;li&gt;How do you know what tests to write?&lt;/li&gt;&#xA;&lt;li&gt;What are the steps for test first?&lt;/li&gt;&#xA;&lt;li&gt;Isn&#39;t this just TDD?&lt;/li&gt;&#xA;&lt;li&gt;Functional Tests vs Unit Tests&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;p&gt;Links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/agile/test-first-programming/&#34; title=&#34;Test First Programming / Test First Development - Python Testing&#34; rel=&#34;nofollow&#34;&gt;Test First Programming / Test First Development - Python Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/agile/is-tdd-dead/&#34; title=&#34;My reaction to &#34; rel=&#34;nofollow&#34;&gt;My reaction to &#34;Is TDD Dead?&#34; - Python Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://pythontest.com/testandcode/23&#34; title=&#34;Episode 23: Lessons about testing and TDD from Kent Beck&#34; rel=&#34;nofollow&#34;&gt;Episode 23: Lessons about testing and TDD from Kent Beck&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://talkpython.fm/episodes/show/145/2017-python-year-in-review&#34; title=&#34;Talk Python, Episode #145 2017 Python Year in Review&#34; rel=&#34;nofollow&#34;&gt;Talk Python, Episode #145 2017 Python Year in Review&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://us.pycon.org/2018/&#34; title=&#34;PyCon 2018 in Cleveland, Ohio | May 9-17&#34; rel=&#34;nofollow&#34;&gt;PyCon 2018 in Cleveland, Ohio | May 9-17&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pythonbytes.fm/&#34; title=&#34;Python Bytes Podcast&#34; rel=&#34;nofollow&#34;&gt;Python Bytes Podcast&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://amzn.to/2C2gvUa&#34; title=&#34;Python Testing with pytest: Simple, Rapid, Effective, and Scalable: Brian Okken: 9781680502404: Amazon.com: Books&#34; rel=&#34;nofollow&#34;&gt;Python Testing with pytest: Simple, Rapid, Effective, and Scalable: Brian Okken: 9781680502404: Amazon.com: Books&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 33 - Katharine Jarmul - Testing in Data Science</title>
      <link>https://pythontest.com/testandcode/episodes/33-katharine-jarmul-testing-in-data-science/</link>
      <pubDate>Thu, 30 Nov 2017 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/33-katharine-jarmul-testing-in-data-science/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/33.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A discussion with Katharine Jarmul, aka kjam, about some of the challenges of data science with respect to testing.&lt;/p&gt;&#xA;&lt;p&gt;Some of the topics we discuss:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;experimentation vs testing&lt;/li&gt;&#xA;&lt;li&gt;testing pipelines and pipeline changes&lt;/li&gt;&#xA;&lt;li&gt;automating data validation&lt;/li&gt;&#xA;&lt;li&gt;property based testing&lt;/li&gt;&#xA;&lt;li&gt;schema validation and detecting schema changes&lt;/li&gt;&#xA;&lt;li&gt;using unit test techniques to test data pipeline stages&lt;/li&gt;&#xA;&lt;li&gt;testing nodes and transitions in DAGs&lt;/li&gt;&#xA;&lt;li&gt;testing expected and unexpected data&lt;/li&gt;&#xA;&lt;li&gt;missing data and non-signals&lt;/li&gt;&#xA;&lt;li&gt;corrupting a dataset with noise&lt;/li&gt;&#xA;&lt;li&gt;fuzz testing for both data pipelines and web APIs&lt;/li&gt;&#xA;&lt;li&gt;datafuzz&lt;/li&gt;&#xA;&lt;li&gt;hypothesis&lt;/li&gt;&#xA;&lt;li&gt;testing internal interfaces&lt;/li&gt;&#xA;&lt;li&gt;documenting and sharing domain expertise to build good reasonableness &lt;/li&gt;&#xA;&lt;li&gt;intermediary data and stages &lt;/li&gt;&#xA;&lt;li&gt;neural networks&lt;/li&gt;&#xA;&lt;li&gt;speaking at conferences&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;p&gt;Special Guest: Katharine Jarmul.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 32 - David Hussman - Agile vs Agility, Dude&#39;s Law, and more</title>
      <link>https://pythontest.com/testandcode/episodes/32-david-hussman-agile-vs-agility-dudes-law-and-more/</link>
      <pubDate>Tue, 03 Oct 2017 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/32-david-hussman-agile-vs-agility-dudes-law-and-more/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/32.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A wonderful discussion with David Hussman. David and Brian look back at what all we&#39;ve learned in XP, TDD, and other Agile methodologies, where things have gone awry, how to bring the value back, and where testing fits into all of this.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;How to build the wrong thing faster&lt;/li&gt;&#xA;&lt;li&gt;Agile vs Agility&lt;/li&gt;&#xA;&lt;li&gt;Product vs Process &lt;/li&gt;&#xA;&lt;li&gt;Where testing fits into software development practices.&lt;/li&gt;&#xA;&lt;li&gt;&#34;Integration tests, there&#39;s a name that needs to be refactored desperately.&#34; &lt;/li&gt;&#xA;&lt;li&gt;Integration tests are &#34;story tests&#34;. They tell the story of the product.&lt;/li&gt;&#xA;&lt;li&gt;XP and TDD and the relationship with tests&lt;/li&gt;&#xA;&lt;li&gt;To test for design, use microtests, xUnit style.&lt;/li&gt;&#xA;&lt;li&gt;User Advocy tests are often lacking, but are needed to learn about the product.&lt;/li&gt;&#xA;&lt;li&gt;&#34;I just keep writing tests until I&#39;m not scared anymore.&#34; - Kent Beck&lt;/li&gt;&#xA;&lt;li&gt;Dude&#39;s Law: Value = Why/How&lt;/li&gt;&#xA;&lt;li&gt;People often focus so much on the how that they forget about why they are doing something.&lt;/li&gt;&#xA;&lt;li&gt;Subcutaneous Tests&lt;/li&gt;&#xA;&lt;li&gt;&#34;The hardest part of programming is thinking.&#34;&lt;/li&gt;&#xA;&lt;li&gt;Refactoring vs Repaving&lt;/li&gt;&#xA;&lt;li&gt;Agility means being able to quickly change direction&lt;/li&gt;&#xA;&lt;li&gt;During experimentation and learning, what matters isn&#39;t how much you got done, but how much you learn.&lt;/li&gt;&#xA;&lt;li&gt;&#34;The best way to get automation is to make developers do manual tests.&#34;&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;p&gt;Special Guest: David Hussman.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 31 - I&#39;m so sick of the testing pyramid</title>
      <link>https://pythontest.com/testandcode/episodes/31-im-so-sick-of-the-testing-pyramid/</link>
      <pubDate>Wed, 27 Sep 2017 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/31-im-so-sick-of-the-testing-pyramid/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/31.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;What started as a twitter disagreement carries over into this civil discussion of software testing. &lt;br&gt;&#xA;Brian and Paul discuss testing practices such as the testing pyramid, TDD, unit testing, system testing, and balancing test effort. &lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;the Testing Pyramid&lt;/li&gt;&#xA;&lt;li&gt;the Testing Column&lt;/li&gt;&#xA;&lt;li&gt;TDD&lt;/li&gt;&#xA;&lt;li&gt;unit testing&lt;/li&gt;&#xA;&lt;li&gt;balancing unit with system tests, functional tests&lt;/li&gt;&#xA;&lt;li&gt;API testing&lt;/li&gt;&#xA;&lt;li&gt;subcutaneous testing&lt;/li&gt;&#xA;&lt;li&gt;customer facing tests&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;p&gt;Special Guest: Paul Merrill.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 30 - Legacy Code - M. Scott Ford</title>
      <link>https://pythontest.com/testandcode/episodes/30-legacy-code-m-scott-ford/</link>
      <pubDate>Mon, 31 Jul 2017 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/30-legacy-code-m-scott-ford/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/30.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;M. Scott Ford is the founder and chief code whisperer at Corgibytes, a company focused on helping other companies with legacy code. &lt;/p&gt;&#xA;&lt;p&gt;Topics include:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;How M. Scott Ford got into forming a company that works on legacy code.&lt;/li&gt;&#xA;&lt;li&gt;Technical debt&lt;/li&gt;&#xA;&lt;li&gt;Process debt&lt;/li&gt;&#xA;&lt;li&gt;Software testing&lt;/li&gt;&#xA;&lt;li&gt;The testing pyramid&lt;/li&gt;&#xA;&lt;li&gt;iterative development&lt;/li&gt;&#xA;&lt;li&gt;kanban&lt;/li&gt;&#xA;&lt;li&gt;readable code and readable test code&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;p&gt;Special Guest: M. Scott Ford.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 29 - Kobiton and QASymphony - Josh Lieberman</title>
      <link>https://pythontest.com/testandcode/episodes/29-kobiton-qasymphony-josh-lieberman/</link>
      <pubDate>Fri, 30 Jun 2017 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/29-kobiton-qasymphony-josh-lieberman/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/29.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Kobiton is a service to test mobile apps on real devices. &lt;br&gt;&#xA;QASymphony offers software testing and QA tools.&lt;/p&gt;&lt;p&gt;Special Guest: Josh Lieberman.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 28 - Chaos Engineering and Experimentation at Netflix - Casey Rosenthal</title>
      <link>https://pythontest.com/testandcode/episodes/28-chaos-engineering-experimentation-at-netflix-casey-rosenthal/</link>
      <pubDate>Fri, 07 Apr 2017 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/28-chaos-engineering-experimentation-at-netflix-casey-rosenthal/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/28.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Today we have an interview with Casey Rosenthal of Netflix.&lt;/p&gt;&#xA;&lt;p&gt;One of the people making sure Netflix runs smoothly is Casey Rosenthall. &lt;br&gt;&#xA;He is the manager for the Traffic, Intuition, and Chaos teams at Netflix.&lt;br&gt;&#xA;He&#39;s got a great perspective on quality and large systems. &lt;/p&gt;&#xA;&lt;p&gt;We talk about &lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Chaos Engineering&lt;/li&gt;&#xA;&lt;li&gt;Experimentation vs Testing&lt;/li&gt;&#xA;&lt;li&gt;Testing Strategy&lt;/li&gt;&#xA;&lt;li&gt;Visualization of large amounts of data representing Steady State&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;p&gt;Special Guest: Casey Rosenthal.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 27 - Mahmoud Hashemi - unit, integration, and system testing</title>
      <link>https://pythontest.com/testandcode/episodes/27-mahmoud-hashemi-unit-integration-and-system-testing/</link>
      <pubDate>Sun, 26 Feb 2017 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/27-mahmoud-hashemi-unit-integration-and-system-testing/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/27.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;What is the difference between a unit test, an integration test, and a system test? Mahmoud Hashemi helps me to define these terms, as well as discuss the role of all testing variants in software development.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;What is the difference between a unit test, an integration test, and a system test? &lt;/li&gt;&#xA;&lt;li&gt;TDD&lt;/li&gt;&#xA;&lt;li&gt;testing pyramid vs testing column&lt;/li&gt;&#xA;&lt;li&gt;the role of testing in software development&lt;/li&gt;&#xA;&lt;li&gt;web frameworks&lt;/li&gt;&#xA;&lt;li&gt;listen to wikipedia&lt;/li&gt;&#xA;&lt;li&gt;hatnote&lt;/li&gt;&#xA;&lt;li&gt;the world’s largest photo competition&lt;/li&gt;&#xA;&lt;li&gt;Enterprise Software with Python&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 25 - Selenium, pytest, Mozilla – Dave Hunt</title>
      <link>https://pythontest.com/testandcode/episodes/25-selenium-pytest-mozilla-dave-hunt/</link>
      <pubDate>Thu, 01 Dec 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/25-selenium-pytest-mozilla-dave-hunt/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/25.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Interview with Dave Hunt&lt;br&gt;d&lt;/p&gt;&lt;p&gt;We Cover:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;http://www.seleniumhq.org/&#34;&gt;Selenium Driver&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://docs.pytest.org/&#34;&gt;pytest&lt;/a&gt;&lt;/li&gt;&lt;li&gt;pytest plugins: &lt;ul&gt;&lt;li&gt;&lt;a href=&#34;http://pytest-selenium.readthedocs.io/&#34;&gt;pytest-selenium&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pypi.python.org/pypi/pytest-html&#34;&gt;pytest-html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://pypi.python.org/pypi/pytest-variables&#34;&gt;pytest-variables&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://tox.readthedocs.io&#34;&gt;tox&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/search?utf8=%E2%9C%93&amp;q=author%3Adavehunt+type%3Aissue+label%3A%22help+wanted%22+state%3Aopen+no%3Aassignee&#34;&gt;Dave Hunt’s “help wanted” list on github&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://www.mozilla.org&#34;&gt;Mozilla&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Also:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;fixtures&lt;/li&gt;&lt;li&gt;xfail&lt;/li&gt;&lt;li&gt;CI and xfail and html reports&lt;/li&gt;&lt;li&gt;CI and capturing &lt;/li&gt;&lt;li&gt;pytest code sprint&lt;/li&gt;&lt;li&gt;working remotely for Mozilla&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Dave Hunt&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 26 - pyresttest – Sam Van Oort</title>
      <link>https://pythontest.com/testandcode/episodes/26-pyresttest-sam-van-oort/</link>
      <pubDate>Thu, 01 Dec 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/26-pyresttest-sam-van-oort/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/26.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Interview with Sam Van Oort about &lt;a href=&#34;https://github.com/svanoort/pyresttest&#34; rel=&#34;nofollow&#34;&gt;pyresttest&lt;/a&gt;,  &#34;A REST testing and API microbenchmarking tool&#34;&lt;/p&gt;&#xA;&lt;p&gt;&lt;b&gt;pyresttest&lt;/b&gt;&lt;/p&gt;&#xA;&lt;p&gt;A question in the &lt;a href=&#34;http://pythontesting.net/slack&#34; rel=&#34;nofollow&#34;&gt;Test &amp; Code Slack channel&lt;/a&gt; was raised about testing REST APIs. There were answers such as pytest + requests, of course, but there was also a mention of &lt;strong&gt;pyresttest&lt;/strong&gt;, &lt;a href=&#34;https://github.com/svanoort/pyresttest&#34; rel=&#34;nofollow&#34;&gt;https://github.com/svanoort/pyresttest&lt;/a&gt;, which I hadn&#39;t heard of. I checked out the github repo, and was struck by how user friendly the user facing test definitions were. So I contacted the developer, Sam Van Oort, and asked him to come on the show and tell me about this tool and why he developed it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PythonBytes.fm</title>
      <link>https://pythontest.com/news/pythonbytes-fm/</link>
      <pubDate>Thu, 10 Nov 2016 08:49:03 +0000</pubDate>
      <guid>https://pythontest.com/news/pythonbytes-fm/</guid>
      <description>&lt;p&gt;Michael Kennedy from &lt;a href=&#34;http://talkpython.fm&#34;&gt;Talk Python to Me&lt;/a&gt; and I have launched a new podcast, called &lt;a href=&#34;http://pythonbytes.fm&#34;&gt;Python Bytes&lt;/a&gt;, &amp;ldquo;Python headlines delivered directly to your earbuds&amp;rdquo;. It&amp;rsquo;s a weekly short format podcast. Please check it out.&lt;/p&gt;&#xA;&lt;p&gt;The first few weeks of a podcast can really make a difference if we can get a bunch of listeners to try it right away. Please consider leaving a review on &lt;a href=&#34;https://itunes.apple.com/us/podcast/python-bytes/id1173690032&#34;&gt;iTunes&lt;/a&gt;. Even if you don&amp;rsquo;t use iTunes to listen, early reviews can really help with visibility.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 24 - pytest - Raphael Aurich</title>
      <link>https://pythontest.com/testandcode/episodes/24-pytest-with-raphael-pierzina/</link>
      <pubDate>Thu, 10 Nov 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/24-pytest-with-raphael-pierzina/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/24.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;pytest is an extremely popular test framework used by many projects and companies. &lt;/p&gt;&lt;p&gt;In this episode, I interview Raphael Aurich (&lt;a href=&#34;https://twitter.com/hackebrot&#34;&gt;@hackebrot&lt;/a&gt;), a core contributor to both pytest and cookiecutter. We discuss how Raphael got involved with both projects, his involvement in cookiecutter, pytest, &#34;adopt pytest month&#34;, the pytest code sprint, and of course some of the cool new features in pytest 3.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 23 - Lessons about testing and TDD from Kent Beck</title>
      <link>https://pythontest.com/testandcode/episodes/23-lessons-about-testing-and-tdd-from-kent-beck/</link>
      <pubDate>Fri, 30 Sep 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/23-lessons-about-testing-and-tdd-from-kent-beck/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/23.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Kent Beck&#39;s twitter profile says &#34;Programmer, author, father, husband, goat farmer&#34;. But I know him best from his work on extreme programming, test first programming, and test driven development. He&#39;s the one. The reason you know about TDD is because of Kent Beck.&lt;/p&gt;&#xA;&lt;p&gt;I first ran across writings from Kent Beck as started exploring Extreme Programming in the early 2000&#39;s.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 22 - Converting Manual Tests to Automated Tests</title>
      <link>https://pythontest.com/testandcode/episodes/22-converting-manual-tests-to-automated-tests/</link>
      <pubDate>Sat, 24 Sep 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/22-converting-manual-tests-to-automated-tests/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/22.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;How do you convert manual tests to automated tests?&lt;/p&gt;&#xA;&lt;p&gt;This episode looks at the differences between manual and automated tests and presents two strategies for converting manual to automated.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 21 - Terminology - test fixtures, subcutaneous testing, end to end testing, system testing</title>
      <link>https://pythontest.com/testandcode/episodes/21-terminology-test-fixtures-subcutaneous-testing-end-to-end-testing-system-testing/</link>
      <pubDate>Wed, 31 Aug 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/21-terminology-test-fixtures-subcutaneous-testing-end-to-end-testing-system-testing/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/21.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A listener requested that I start covering some terminology. &lt;br&gt; I think it&#39;s a great idea.&lt;/p&gt;&lt;p&gt;Covered in this episode:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Test Fixtures&lt;/li&gt;&lt;li&gt;Subcutaneous Testing&lt;/li&gt;&lt;li&gt;End to End Testing (System Testing)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I also discuss:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A book rewrite&lt;/li&gt;&lt;li&gt;Progress on transcripts&lt;/li&gt;&lt;li&gt;A story from the slack channel&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 20 - Talk Python To Me - Michael Kennedy</title>
      <link>https://pythontest.com/testandcode/episodes/20-talk-python-to-me-host-michael-kennedy/</link>
      <pubDate>Fri, 29 Jul 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/20-talk-python-to-me-host-michael-kennedy/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/20.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I talk with Michael about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Episodes of his show having to do with testing.&lt;/li&gt;&lt;li&gt;His transition from employee to podcast host and online training entrepreneur.&lt;/li&gt;&lt;li&gt;His Python training courses.&lt;/li&gt;&lt;li&gt;The Pyramid Web framework.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Courses by Michael&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://talkpython.fm/course&#34;&gt;Explore Python Jumpstart by Building 10 Apps&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://talkpython.fm/pythonic&#34;&gt;Explore Write Pythonic Code Like a Seasoned Developer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://talkpython.fm/launch&#34;&gt;Python for Entrepreneurs&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Testing related podcast Episodes from Talk Python To Me:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://talkpython.fm/episodes/show/10&#34;&gt;episode 10: Harry Percival, TDD for the Web in Python, and PythonAnywhere&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://www.pythonanywhere.com/&#34;&gt;PythonAnywhere&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://www.obeythetestinggoat.com/&#34;&gt;Harry&#39;s book, TDD with Python&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://talkpython.fm/episodes/show/45&#34;&gt;episode 45: Brian Okken, Pragmatic testing and the Testing Column&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Talk Python To Me podcast&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://talkpython.fm/episodes/show/63&#34;&gt;episode 63: Austin Bingham, Mutation Testing, Cosmic Ray&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;https://github.com/sixty-north/cosmic-ray&#34;&gt;Cosmic Ray&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;https://talkpython.fm/episodes/show/67&#34;&gt; episode 67: David MacIver, Hypothesis&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;http://hypothesis.works/&#34;&gt;Hypothesis&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Michael Kennedy&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 19 - Python unittest - Robert Collins</title>
      <link>https://pythontest.com/testandcode/episodes/19-python-unittest-with-robert-collins/</link>
      <pubDate>Wed, 15 Jun 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/19-python-unittest-with-robert-collins/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/19.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Interview with Robert Collins, current core maintainer of Python&#39;s unittest module.&lt;/p&gt;&lt;p&gt;Some of the topics covered&lt;/p&gt;&lt;ul&gt;&lt;li&gt;How did Robert become the maintainer of unittest?&lt;/li&gt;&lt;li&gt;unittest2 as a rolling backport of unittest&lt;/li&gt;&lt;li&gt;test and class parametrization with subtest and testscenarios&lt;/li&gt;&lt;li&gt;Which extension to unittest most closely resembles Pytest fixtures?&lt;/li&gt;&lt;li&gt;Comparing Pytest and unittest&lt;/li&gt;&lt;li&gt;Will unittest ever get assert rewriting?&lt;/li&gt;&lt;li&gt;Future changes to unittest&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I&#39;ve been re-studying unittest recently and I mostly wanted to ask Robert a bunch of clarifying questions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 18 - Testing in Startups and Hiring Software Engineers - Joe Stump</title>
      <link>https://pythontest.com/testandcode/episodes/18-testing-in-startups-and-hiring-software-engineers-with-joe-stump/</link>
      <pubDate>Tue, 19 Apr 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/18-testing-in-startups-and-hiring-software-engineers-with-joe-stump/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/18.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In this episode, I interview with Joe Stump, cofounder of Sprintly (&lt;a href=&#34;https://sprint.ly&#34;&gt;https://sprint.ly&lt;/a&gt;), to give the startup perspective to development and testing.&lt;/p&gt;&lt;p&gt;Joe has spent his career in startups. &lt;br&gt; He&#39;s also been involved with hiring and talent acquisition for several startups.&lt;/p&gt;&lt;p&gt;We talk about testing, continuous integration, code reviews, deployment, tolerance to defects, and how some of those differ between large companies and small companies and startups.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 17 - The Travis Foundation - Laura Gaetano</title>
      <link>https://pythontest.com/testandcode/episodes/17-the-travis-foundation/</link>
      <pubDate>Mon, 11 Apr 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/17-the-travis-foundation/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/17.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The Travis Foundation. Interview with Laura Gaetano&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Links and things we talked about:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;http://foundation.travis-ci.org&#34;&gt;Travis Foundation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://foundation.travis-ci.org/grants/&#34;&gt;Open Source Grants&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://foundation.travis-ci.org/2016/01/25/exercism/&#34;&gt;The Foundation&#39;s support of Katrina Owen from exercism.io&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://Exercism.io&#34;&gt;Exercism.io&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://railsgirlssummerofcode.org/campaign/&#34;&gt;Rails Girls summer of code&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://diversitytickets.org&#34;&gt;Diversity Tickets&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Conference support&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://speakerinnen.org&#34;&gt;Speakerinnen&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#34;http://mhprompt.org/&#34;&gt;Prompt&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Guests:&lt;/strong&gt; Laura ✨🎨&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python featured in April issue of PragPub</title>
      <link>https://pythontest.com/publications/python-featured-april-pragpub/</link>
      <pubDate>Wed, 06 Apr 2016 18:04:43 +0000</pubDate>
      <guid>https://pythontest.com/publications/python-featured-april-pragpub/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://pythontest.com/img/pragpub_april_2016.jpg&#34; alt=&#34;PragPub April 2016&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.presspadapp.com/digital-magazine/pragpub&#34;&gt;PragPub April 2016&lt;/a&gt; featuring Python (and me)&lt;/p&gt;&#xA;&lt;p&gt;PragPub is the digital magazine put out by Pragmatic Bookshelf, Michael Swaine, and Nancy Groth.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m especially excited about it because I have two articles featured.&lt;br&gt;&#xA;I mostly know Michael from the many years of reading Dr Dobb&amp;rsquo;s.&lt;br&gt;&#xA;And I respect Pragmatic Bookshelf for their work in technical publishing.&lt;/p&gt;&#xA;&lt;p&gt;So I was thrilled to be asked to contribute.&lt;/p&gt;&#xA;&lt;p&gt;From the Contents page:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 16 - Welcome to Test and Code</title>
      <link>https://pythontest.com/testandcode/episodes/16-welcome-to-test-and-code/</link>
      <pubDate>Thu, 31 Mar 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/16-welcome-to-test-and-code/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/16.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This is a small episode. &lt;/p&gt;&#xA;&lt;p&gt;I&#39;m changing the name from the &#34;Python Test Podcast&#34; to &#34;Test &amp; Code&#34;.&lt;br&gt;&#xA;I just want to discuss the reasons behind this change, and take a peek at what&#39;s coming up in the future for this podcast.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontest.com/testandcode/7&#34; rel=&#34;nofollow&#34;&gt;The Waterfall Model and &#34;Managing the Development of Large Software Systems&#34;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://tesatandcode.com/14&#34; rel=&#34;nofollow&#34;&gt;Josh Kalderimis from Travis CI&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 15 - Lean Software Development</title>
      <link>https://pythontest.com/testandcode/episodes/15-lean-software-development/</link>
      <pubDate>Wed, 09 Mar 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/15-lean-software-development/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/15.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;b&gt;An introduction to Lean Software Development&lt;/b&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is a quick intro to the concepts of Lean Software Development.&lt;/p&gt;&#xA;&lt;p&gt;I&#39;m starting a journey of trying to figure out how to apply lean principles to software development in the context of 2016/2017.&lt;/p&gt;&#xA;&lt;p&gt;&lt;b&gt;Links&lt;/b&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://amzn.to/223fkLo&#34; rel=&#34;nofollow&#34;&gt;Lean Software Development&lt;/a&gt; book by Mary &amp; Tom Poppendieck&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Lean_software_development&#34; rel=&#34;nofollow&#34;&gt;wikipedia&lt;/a&gt; entry for Lean Software Development&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://patreon.com/testpodcast&#34; rel=&#34;nofollow&#34;&gt;Patreon supporters of the show&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://talkpython.fm/&#34; rel=&#34;nofollow&#34;&gt;Talk Python to Me&lt;/a&gt; Podcast&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.kickstarter.com/projects/mikeckennedy/python-jumpstart-by-building-10-apps-video-course?ref=card&#34; rel=&#34;nofollow&#34;&gt;Python Jumpstart by Building 10 Apps - video course&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pytest.org/latest/announce/sprint2016.html&#34; rel=&#34;nofollow&#34;&gt;pytest sprint&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pytest.org&#34; rel=&#34;nofollow&#34;&gt;pytest.org&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.indiegogo.com/projects/python-testing-sprint-mid-2016#/&#34; rel=&#34;nofollow&#34;&gt;pytest/tox indiegogo campaign&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 14 - Continuous Integration with Travis CI – Josh Kalderimis</title>
      <link>https://pythontest.com/testandcode/episodes/14-continuous-integration-with-travis-ci-josh-kalderimis/</link>
      <pubDate>Thu, 25 Feb 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/14-continuous-integration-with-travis-ci-josh-kalderimis/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/14.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;b&gt;Interview with Josh Kalderimis from Travis CI.&lt;/b&gt;&lt;/p&gt;&#xA;&lt;p&gt;Josh is a co-founder and Chief Post-It Officer at Travis CI. &lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Topics&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;What is Continuous Integration, CI&lt;/li&gt;&#xA;&lt;li&gt;What is Travis CI&lt;/li&gt;&#xA;&lt;li&gt;Some history of the company&lt;/li&gt;&#xA;&lt;li&gt;travis-ci.org vs travis-ci.com and merging the two&lt;/li&gt;&#xA;&lt;li&gt;Enterprise and the importance of security&lt;/li&gt;&#xA;&lt;li&gt;Feature questions&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Travis vs Jenkins&lt;/li&gt;&#xA;&lt;li&gt;Travis notification through Slack&lt;/li&gt;&#xA;&lt;li&gt;Reporting history of Travis results&lt;/li&gt;&#xA;&lt;li&gt;Dealing with pytest results status other than pass/fail&lt;/li&gt;&#xA;&lt;li&gt;Capturing std out and stderr logging from tests&lt;/li&gt;&#xA;&lt;li&gt;Build artifacts&lt;/li&gt;&#xA;&lt;li&gt;Tox and Travis&lt;/li&gt;&#xA;&lt;li&gt;Using Selenium&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;/li&gt;&#xA;&lt;li&gt;What does a Chief Post-It Officer do&lt;/li&gt;&#xA;&lt;li&gt;Differentiation between Travis and other CI options&lt;/li&gt;&#xA;&lt;li&gt;Using Slack to keep remote teams communicating well&lt;/li&gt;&#xA;&lt;li&gt;Travis team&lt;/li&gt;&#xA;&lt;li&gt;Funding open source projects&lt;/li&gt;&#xA;&lt;li&gt;Travis Foundation&lt;/li&gt;&#xA;&lt;li&gt;Rails Girls Summer of Code&lt;/li&gt;&#xA;&lt;li&gt;Open source grants&lt;/li&gt;&#xA;&lt;li&gt;Mustaches and beards&lt;/li&gt;&#xA;&lt;li&gt;Shite shirts&lt;/li&gt;&#xA;&lt;li&gt;New Zealand&lt;/li&gt;&#xA;&lt;li&gt;What does Team Periwinkle do&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 13 - Ian Cordasco – Betamax</title>
      <link>https://pythontest.com/testandcode/episodes/13-ian-cordasco-betamax/</link>
      <pubDate>Wed, 17 Feb 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/13-ian-cordasco-betamax/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/13.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;b&gt;Testing apps that use requests without using mock.&lt;/b&gt;&lt;/p&gt;&#xA;&lt;p&gt;Interview with Ian Cordasco (&lt;a href=&#34;https://github.com/sigmavirus24&#34; rel=&#34;nofollow&#34;&gt;@sigmavirus24&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Topics:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Betamax - python library for replaying requests interactions for use in testing.&lt;/li&gt;&#xA;&lt;li&gt;requests&lt;/li&gt;&#xA;&lt;li&gt;github3.py&lt;/li&gt;&#xA;&lt;li&gt;Pycon 2015 talk: Ian Cordasco - Cutting Off the Internet: Testing Applications that Use Requests - PyCon 2015&lt;/li&gt;&#xA;&lt;li&gt;Pytest and using Betamax with pytest fixtures&lt;/li&gt;&#xA;&lt;li&gt;The utility (or uselessness) of teaching programming with Java (My own rant mainly)&lt;/li&gt;&#xA;&lt;li&gt;Rackspace and Ian’s role at Rackspace and OpenStack&lt;/li&gt;&#xA;&lt;li&gt;Python Code Quality Authority: flake8, pep8, mccabe, pylint, astroid, …&lt;/li&gt;&#xA;&lt;li&gt;Static code analysis and what to use which tool when.&lt;/li&gt;&#xA;&lt;li&gt;Raymond Hettinger - Beyond PEP 8 -- Best practices for beautiful intelligible code - PyCon 2015&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Given-When-Then</title>
      <link>https://pythontest.com/strategy/given-when-then-2/</link>
      <pubDate>Wed, 10 Feb 2016 06:54:35 +0000</pubDate>
      <guid>https://pythontest.com/strategy/given-when-then-2/</guid>
      <description>&lt;p&gt;Designing your test methods using a simple structure such as given-when-then will help you:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Communicate the purpose of your test more clearly&lt;/li&gt;&#xA;&lt;li&gt;Focus your thinking while writing the test&lt;/li&gt;&#xA;&lt;li&gt;Make test writing faster&lt;/li&gt;&#xA;&lt;li&gt;Make it easier to re-use parts of your test&lt;/li&gt;&#xA;&lt;li&gt;Highlight the assumptions you are making about the test preconditions&lt;/li&gt;&#xA;&lt;li&gt;Highlight what outcomes you are expecting and testing against.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In this post I&amp;rsquo;ll be talking about designing your test cases/test methods using given-when-then.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 12 - Coverage.py with Ned Batchelder</title>
      <link>https://pythontest.com/testandcode/episodes/12-coverage-py-with-ned-batchelder/</link>
      <pubDate>Tue, 09 Feb 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/12-coverage-py-with-ned-batchelder/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/12.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In this episode I interview Ned Batchelder.&lt;/p&gt;&#xA;&lt;p&gt;I know that coverage.py is very important to a lot of people to understand how much of their code is being covered by their test suites.&lt;br&gt;&#xA;Since I&#39;m far from an expert on coverage, I asked Ned to discuss it on the show.&lt;/p&gt;&#xA;&lt;p&gt;I&#39;m also quite a fan of Ned&#39;s 2014 PyCon talk &#34;Getting Started Testing&#34;, so I definitely asked him about that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 11 - pytest assert magic</title>
      <link>https://pythontest.com/testandcode/episodes/11-pytest-assert-magic/</link>
      <pubDate>Thu, 04 Feb 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/11-pytest-assert-magic/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/11.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;How pytest, unittest, and nose deal with assertions.&lt;/p&gt;&#xA;&lt;p&gt;The job of the test framework to tell developers how and why their tests failed is a difficult job.&lt;br&gt;&lt;br&gt;&#xA;In this episode I talk about assert helper functions and the 3 methods pytest uses to get around having users need to use assert helper functions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 10 - Test Case Design using Given-When-Then from BDD</title>
      <link>https://pythontest.com/testandcode/episodes/10-test-case-design-using-given-when-then-from-bdd/</link>
      <pubDate>Sun, 31 Jan 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/10-test-case-design-using-given-when-then-from-bdd/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/10.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Given-When-Then is borrowed from BDD and is my favorite structure for test case design.&lt;/p&gt;&#xA;&lt;p&gt;It doesn’t matter if you are using pytest, unittest, nose, or something completely different, this episode will help you write better tests.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The Given-When-Then structure for test method/function development.&lt;/li&gt;&#xA;&lt;li&gt;How and why to utilize fixtures for your given or precondition code.&lt;/li&gt;&#xA;&lt;li&gt;Similarities with other structure discriptions.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Setup-Test-Teardown&lt;/li&gt;&#xA;&lt;li&gt;Setup-Excercise-Verify-Teardown.&lt;/li&gt;&#xA;&lt;li&gt;Arrange-Act-Assert&lt;/li&gt;&#xA;&lt;li&gt;Preconditions-Trigger-Postconditions.&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;/li&gt;&#xA;&lt;li&gt;Benefits&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Communicate the purpose of your test more clearly&lt;/li&gt;&#xA;&lt;li&gt;Focus your thinking while writing the test&lt;/li&gt;&#xA;&lt;li&gt;Make test writing faster&lt;/li&gt;&#xA;&lt;li&gt;Make it easier to re-use parts of your test&lt;/li&gt;&#xA;&lt;li&gt;Highlight the assumptions you are making about the test preconditions&lt;/li&gt;&#xA;&lt;li&gt;Highlight what outcomes you are expecting and testing against.&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Links discussed in the show:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 9 - Harry Percival - Testing Web Apps with Python, Selenium, Django</title>
      <link>https://pythontest.com/testandcode/episodes/9-harry-percival-testing-web-apps-with-python-selenium-django/</link>
      <pubDate>Mon, 18 Jan 2016 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/9-harry-percival-testing-web-apps-with-python-selenium-django/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/9.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ul&gt;&lt;li&gt;Intro to Harry Percival, his background and story of how he got into TDD and ended up writing a &lt;a href=&#34;http://amzn.to/1SqW1t3&#34;&gt;book&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Comparing using unittest and pytest with applicability to testing django projects. &lt;/li&gt;&lt;li&gt;Functional end to end testing with selenium.&lt;/li&gt;&lt;li&gt;The django test client for middle level tests.&lt;/li&gt;&lt;li&gt;test isolation&lt;/li&gt;&lt;li&gt;django and isolated unit tests&lt;/li&gt;&lt;li&gt;unit tests vs integration tests&lt;/li&gt;&lt;li&gt;Testing done by the development team without an external QA&lt;/li&gt;&lt;li&gt;Double loop TDD: Functional test first, then unit tests&lt;/li&gt;&lt;li&gt;Spikes: investigations without tests&lt;/li&gt;&lt;li&gt;Harry&#39;s experience with having a freely available web version of a book that is also intended to be sold.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Update: Comment from Harry Percival on 19-Jan-2014&lt;/strong&gt;&lt;br&gt; I might have been a bit down on unit tests vs functional tests in that &#34;unit tests never fail comment&#34;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 8 - Agile vs Agility - Agile Is Dead (Long Live Agility)</title>
      <link>https://pythontest.com/testandcode/episodes/8-agile-vs-agility-agile-is-dead-long-live-agility/</link>
      <pubDate>Tue, 15 Dec 2015 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/8-agile-vs-agility-agile-is-dead-long-live-agility/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/8.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In today&#39;s podcast, I dodge the question of &#34;What do you think of Agile?&#34; by reading &lt;a href=&#34;http://pragdave.me/blog/2014/03/04/time-to-kill-agile/&#34; rel=&#34;nofollow&#34;&gt;an essay from Dave Thomas&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 7 - The Waterfall Model and “Managing the Development of Large Software Systems”</title>
      <link>https://pythontest.com/testandcode/episodes/7-the-waterfall-model-and-managing-the-development-of-large-software-systems/</link>
      <pubDate>Wed, 21 Oct 2015 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/7-the-waterfall-model-and-managing-the-development-of-large-software-systems/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/7.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The waterfall model has been used and modified and changed and rebelled against since before I started programming. Waterfall such an important character in the story of software development that we should get to know it a better.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 6 - Writing software is like nothing else</title>
      <link>https://pythontest.com/testandcode/episodes/6-writing-software-is-like-nothing-else/</link>
      <pubDate>Tue, 20 Oct 2015 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/6-writing-software-is-like-nothing-else/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/6.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;My experience with writing software comes from my experience: where I grew up, what eras I lived through, what my economical and geographical experiences have been, when I learned to code, and what projects I&#39;ve worked on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 5 - Test Classes - No OO experience required</title>
      <link>https://pythontest.com/testandcode/episodes/5-test-classes-no-oo-experience-required/</link>
      <pubDate>Wed, 23 Sep 2015 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/5-test-classes-no-oo-experience-required/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/5.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Setup and Teardown&lt;/li&gt;&#xA;&lt;li&gt;Benefits of Test Fixtures&#xA;&lt;ul&gt;&#xA;&lt;li&gt;code reuse&lt;/li&gt;&#xA;&lt;li&gt;cleanup of resources&lt;/li&gt;&#xA;&lt;li&gt;errors vs failures&lt;/li&gt;&#xA;&lt;li&gt;focusing your thinking on what you are testing and what you are not&lt;/li&gt;&#xA;&lt;li&gt;scoping for efficiency&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;/li&gt;&#xA;&lt;li&gt;Brief look at pytest named fixtures&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;b&gt;References&lt;/b&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/pytest/pytest-fixtures/&#34; rel=&#34;nofollow&#34;&gt;pytest fixtures series&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/pytest/pytest-fixtures-nuts-bolts/&#34; rel=&#34;nofollow&#34;&gt;pytest fixtures nuts &amp; bolts&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/pytest/pytest-session-scoped-fixtures/&#34; rel=&#34;nofollow&#34;&gt;pytest session scoped fixtures&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/unittest/unittest-fixtures/&#34; rel=&#34;nofollow&#34;&gt;unittest fixtures&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/nose/nose-introduction/#fixtures&#34; rel=&#34;nofollow&#34;&gt;nose fixtures mentioned in introduction&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/nose/nose-fixture-reference/&#34; rel=&#34;nofollow&#34;&gt;nose fixture reference post&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/specify-test-unittest-nosetests-pytest/&#34; rel=&#34;nofollow&#34;&gt;how to run a single class&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 4 - Test Fixtures - Setup, Teardown, and so much more</title>
      <link>https://pythontest.com/testandcode/episodes/4-test-fixtures-setup-teardown-and-so-much-more/</link>
      <pubDate>Fri, 11 Sep 2015 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/4-test-fixtures-setup-teardown-and-so-much-more/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/4.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Setup and Teardown&lt;/li&gt;&#xA;&lt;li&gt;Benefits of Test Fixtures&#xA;&lt;ul&gt;&#xA;&lt;li&gt;code reuse&lt;/li&gt;&#xA;&lt;li&gt;cleanup of resources&lt;/li&gt;&#xA;&lt;li&gt;errors vs failures&lt;/li&gt;&#xA;&lt;li&gt;focusing your thinking on what you are testing and what you are not&lt;/li&gt;&#xA;&lt;li&gt;scoping for efficiency&lt;/li&gt;&#xA;&lt;/ul&gt;&lt;/li&gt;&#xA;&lt;li&gt;Brief look at pytest named fixtures&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;b&gt;References&lt;/b&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/pytest/pytest-fixtures/&#34; rel=&#34;nofollow&#34;&gt;pytest fixtures series&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/pytest/pytest-fixtures-nuts-bolts/&#34; rel=&#34;nofollow&#34;&gt;pytest fixtures nuts &amp; bolts&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/pytest/pytest-session-scoped-fixtures/&#34; rel=&#34;nofollow&#34;&gt;pytest session scoped fixtures&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/unittest/unittest-fixtures/&#34; rel=&#34;nofollow&#34;&gt;unittest fixtures&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/nose/nose-introduction/#fixtures&#34; rel=&#34;nofollow&#34;&gt;nose fixtures mentioned in introduction&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/nose/nose-fixture-reference/&#34; rel=&#34;nofollow&#34;&gt;nose fixture reference post&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Test and Code 3 - Why test?</title>
      <link>https://pythontest.com/testandcode/episodes/3-why-test/</link>
      <pubDate>Wed, 02 Sep 2015 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/3-why-test/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/3.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Answering a listener question.&lt;/p&gt;&#xA;&lt;p&gt;&lt;b&gt;Why testing?&lt;/b&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;What are the benefits?&lt;/li&gt;&#xA;&lt;li&gt;Why automated testing over manual testing?&lt;/li&gt;&#xA;&lt;li&gt;Why test first?&lt;/li&gt;&#xA;&lt;li&gt;Why do automated testing during development?&lt;/li&gt;&#xA;&lt;li&gt;Why test to the user level API?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;After describing my ideal test strategy and project, I list:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Business related, practical benefits of testing&lt;/li&gt;&#xA;&lt;li&gt;Personal reasons to embrace testing&lt;/li&gt;&#xA;&lt;li&gt;Pragmatic, day to day, developer benefits of testing &lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Transcript&lt;/summary&gt;&#xA;&lt;p&gt;Hello everyone, my name is Brian Okken. Welcome to the Python test podcast. (Now Test &amp;amp; Code)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test and Code 2 - Pytest vs Unittest vs Nose</title>
      <link>https://pythontest.com/testandcode/episodes/2-pytest-vs-unittest-vs-nose/</link>
      <pubDate>Thu, 20 Aug 2015 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/testandcode/episodes/2-pytest-vs-unittest-vs-nose/</guid>
      <description>&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://test-and-code.sfo3.cdn.digitaloceanspaces.com/audio/2.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;&lt;/audio&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test and Code Episode Archive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/testandcode_feed.xml&#34;&gt;XML feed URL for podcast players&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I list my requirements for a framework and discuss how Pytest, Unittest, and Nose measure up to those requirements.&lt;/p&gt;&#xA;&lt;p&gt;Mentioned:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/pytest/pytest-introduction/&#34; rel=&#34;nofollow&#34;&gt;pytest&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/unittest/unittest-introduction/&#34; rel=&#34;nofollow&#34;&gt;unittest&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/nose/nose-introduction/&#34; rel=&#34;nofollow&#34;&gt;nose&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/strategy/delayed-assert/&#34; rel=&#34;nofollow&#34;&gt;delayed assert&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/pytest-expect/&#34; rel=&#34;nofollow&#34;&gt;pytest-expect&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://pythontesting.net/framework/doctest/doctest-introduction/&#34; rel=&#34;nofollow&#34;&gt;doctest&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I did the audio processing differently for this episode. Please let me know how it sounds, if there are any problems, etc.&lt;/p&gt;&#xA;&lt;details&gt;&#xA;&lt;summary&gt;Transcript&lt;/summary&gt;&#xA;&lt;p&gt;Hello everyone. My name is Brian Okken. Welcome to the Python Test Podcast (Now called &amp;lsquo;Test &amp;amp; Code&amp;rsquo;).&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest expect fixture plugin, iteration 1</title>
      <link>https://pythontest.com/framework/pytest/pytest-expect-plugin-1/</link>
      <pubDate>Tue, 10 Mar 2015 13:28:02 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-expect-plugin-1/</guid>
      <description>&lt;p&gt;This is the first iteration that implements &amp;rsquo;expect&amp;rsquo; as a fixture.&lt;/p&gt;&#xA;&lt;p&gt;This is really the third attempt at an &amp;rsquo;expect()&amp;rsquo; implementation that allows multiple failures per test.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/strategy/delayed-assert/&#34;&gt;First attempt&lt;/a&gt; was a general solution that works with any test framework, but with a slightly clunky API. The main problem with it was that it required the test to call a final &amp;lsquo;assert_expectations()&amp;rsquo; from the test code. If you forgot to call that function, the failures weren&amp;rsquo;t reported.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/framework/pytest/pytest-delayed-assert-plugin-1/&#34;&gt;Second attempt&lt;/a&gt; was a pytest plugin implementation that eliminated the need for the &amp;lsquo;assert_expectations()&amp;rsquo; call in the test because it was called automatically. &lt;a href=&#34;https://pythontest.com/framework/pytest/pytest-delayed-assert-plugin-1/#issues&#34;&gt;I wasn&amp;rsquo;t thrilled with this solution.&lt;/a&gt; But it works.&lt;/li&gt;&#xA;&lt;li&gt;In the solution I&amp;rsquo;m presenting in this post, I&amp;rsquo;m moving all of the code into one file and implementing &amp;rsquo;expect&amp;rsquo; as a pytest fixture.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;callout note &#34;&gt;&#xA;  The end result of all of this is now a plugin called &lt;a href=&#34;https://github.com/okken/pytest-check&#34;&gt;pytest-check&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;I think there are advantages to having &amp;rsquo;expect&amp;rsquo; as a fixture.&lt;br&gt;&#xA;Let me know what you think.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Test First Programming / Test First Development</title>
      <link>https://pythontest.com/agile/test-first-programming/</link>
      <pubDate>Tue, 03 Mar 2015 08:19:09 +0000</pubDate>
      <guid>https://pythontest.com/agile/test-first-programming/</guid>
      <description>&lt;p&gt;Occasionally referred to as &amp;ldquo;Test First Development&amp;rdquo;, &amp;ldquo;Test First Programming&amp;rdquo; is a beautiful concept that radically changed the way I approach software development.&lt;/p&gt;&#xA;&lt;p&gt;The ideas of &amp;ldquo;Test First Programming&amp;rdquo; and &amp;ldquo;Test Driven Development&amp;rdquo; are often muddled together.&lt;br&gt;&#xA;However, &amp;ldquo;Test First&amp;rdquo; is powerful enough to stand on it&amp;rsquo;s own.&lt;br&gt;&#xA;I think it&amp;rsquo;s important to present the concepts separately.&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;TDD&amp;rdquo; and many other agile practices build on &amp;ldquo;Test First&amp;rdquo;.&lt;br&gt;&#xA;This isn&amp;rsquo;t just about remembering the past.&lt;br&gt;&#xA;The lessons learned from &amp;ldquo;Test First&amp;rdquo; are still very important.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest delayed assert / multiple failure plugin, iteration 1</title>
      <link>https://pythontest.com/framework/pytest/pytest-delayed-assert-plugin-1/</link>
      <pubDate>Thu, 19 Feb 2015 05:17:48 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-delayed-assert-plugin-1/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://pythontest.com/strategy/delayed-assert/&#34;&gt;Delayed assert / multiple failures per test&lt;/a&gt;, I presented a first attempt at writing an &lt;code&gt;expect()&lt;/code&gt; function that will allow&lt;br&gt;&#xA;a test function to collect multiple failures and not stop execution until the end of the test.&lt;/p&gt;&#xA;&lt;div class=&#34;callout note &#34;&gt;&#xA;  The end result of all of this is now a plugin called &lt;a href=&#34;https://github.com/okken/pytest-check&#34;&gt;pytest-check&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;There&amp;rsquo;s one big thing about that method that I don&amp;rsquo;t like.&lt;br&gt;&#xA;I don&amp;rsquo;t like having to call &lt;code&gt;assert_expectations()&lt;/code&gt; within the test.&lt;br&gt;&#xA;It would be cool to push that part into a plugin.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Delayed assert / multiple failures per test</title>
      <link>https://pythontest.com/strategy/delayed-assert/</link>
      <pubDate>Fri, 13 Feb 2015 08:20:14 +0000</pubDate>
      <guid>https://pythontest.com/strategy/delayed-assert/</guid>
      <description>&lt;div class=&#34;callout note &#34;&gt;&#xA;  The end result of all of this is now a plugin called &lt;a href=&#34;https://github.com/okken/pytest-check&#34;&gt;pytest-check&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;A test stops execution once it hits a failing assert statement.&lt;br&gt;&#xA;That&amp;rsquo;s kinda the point of an assert statement, though, so that&amp;rsquo;s not surprising.&lt;/p&gt;&#xA;&lt;p&gt;However, sometimes it&amp;rsquo;s useful to continue with the test even with a failing assert.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m going to present one method for getting around this restriction, to test multiple things, allow multiple failures per test, and continue execution after a failure.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why Most Unit Testing is Waste</title>
      <link>https://pythontest.com/strategy/why-most-unit-testing-is-waste/</link>
      <pubDate>Fri, 01 Aug 2014 12:55:48 +0000</pubDate>
      <guid>https://pythontest.com/strategy/why-most-unit-testing-is-waste/</guid>
      <description>&lt;p&gt;I don&amp;rsquo;t rememember how I ran across this article by James O Coplien. However, I was immediately impressed with the thought and experience that went into this paper.&#xA;Regardless of your viewpoints towards unit tests vs. other types of automated tests, this article is important to read.&lt;br&gt;&#xA;If your first reaction to the title is anger, please take a deep breath, try to keep an open mind, and actually &lt;em&gt;READ&lt;/em&gt; what Cope has to say.&#xA;I am going to reserve my own reactions to this to a future post, as I don&amp;rsquo;t want to color your views before you read it.&#xA;I am posting the entire article with no changes other than formatting.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My reaction to “Is TDD Dead?”</title>
      <link>https://pythontest.com/agile/is-tdd-dead/</link>
      <pubDate>Sun, 25 May 2014 07:26:48 +0000</pubDate>
      <guid>https://pythontest.com/agile/is-tdd-dead/</guid>
      <description>&lt;p&gt;Whatever your stance on the merits or pitfalls of Test Driven Development, I think it&amp;rsquo;s worthwhile and educational to pay attention to a discussion that&amp;rsquo;s going on lately.&lt;/p&gt;&#xA;&lt;h2 id=&#34;testing-is-crucial-but-is-unit-test-focused-tdd-the-right-path&#34;&gt;Testing is crucial. But is unit test focused TDD the right path?&lt;/h2&gt;&#xA;&lt;p&gt;I care about the conversation about TDD because I see serious flaws in the conventional understanding of TDD.&lt;/p&gt;&#xA;&lt;p&gt;Much of the current view of TDD includes:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Units are tested in isolation of the rest of the system.&lt;/li&gt;&#xA;&lt;li&gt;Unit tests are more important than any other form of testing.&lt;/li&gt;&#xA;&lt;li&gt;A &amp;ldquo;unit&amp;rdquo; is a class or a function. Nothing larger is a &amp;ldquo;unit&amp;rdquo;.&lt;/li&gt;&#xA;&lt;li&gt;If you test more than one class, that&amp;rsquo;s an integration test.&lt;/li&gt;&#xA;&lt;li&gt;If you test from the API with all resources, that&amp;rsquo;s a system test. Let QA deal with that later. &lt;strong&gt;Isn&amp;rsquo;t that exactly where waterfall failed?&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;You can&amp;rsquo;t write any production code without a failing test.&lt;/li&gt;&#xA;&lt;li&gt;You have to write only one test at a time, and it must fail.&lt;/li&gt;&#xA;&lt;li&gt;Tests have to be fast.&lt;/li&gt;&#xA;&lt;li&gt;Therefore, they cannot touch hardware, the file system, other services, or database.&lt;/li&gt;&#xA;&lt;li&gt;Tests should be short.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;All of this rubs me the wrong way.&lt;br&gt;&#xA;I&amp;rsquo;ll get to my thoughts later, but my concern about this cemented view of TDD caused me to be very interested in the current talks.&lt;/p&gt;&#xA;&lt;h2 id=&#34;on-to-the-discussion&#34;&gt;On to the discussion&lt;/h2&gt;&#xA;&lt;p&gt;I came in after the 2nd video, while doing research on Agile and TDD.&lt;br&gt;&#xA;I&amp;rsquo;m not sure if the order matters, but here&amp;rsquo;s a list of what I know about the discussions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mixing pytest fixture scope</title>
      <link>https://pythontest.com/framework/pytest/pytest-mixing-fixture-scope/</link>
      <pubDate>Tue, 25 Mar 2014 13:00:31 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-mixing-fixture-scope/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s say I&amp;rsquo;ve got:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;a function scope fixture &amp;lsquo;resource_c&amp;rsquo;&lt;/li&gt;&#xA;&lt;li&gt;that uses a module scoped fixture &amp;lsquo;fixture_b&amp;rsquo;&lt;/li&gt;&#xA;&lt;li&gt;that uses a session scoped fixture &amp;lsquo;fixture_a&amp;rsquo;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This all works fine.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;conftest.py:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pytest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.fixture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scope&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;session&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;resource_a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;[setup] resource_a()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;yield&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[teardown] resource_a()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.fixture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scope&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;module&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;resource_b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resource_a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[setup] resource_b()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;yield&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[teardown] resource_b()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.fixture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scope&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;function&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;resource_c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resource_b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;[setup] resource_c()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;yield&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;[teardown] resource_c()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;test_alpha.py:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_one&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resource_c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;In test_one()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_two&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resource_c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;In test_two()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;test_beta.py:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_three&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resource_c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;In test_three()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_four&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resource_c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;In test_four()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This seems reasonable to me.&lt;br&gt;&#xA;What do you think will happen?&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest session scoped fixtures</title>
      <link>https://pythontest.com/framework/pytest/pytest-session-scoped-fixtures/</link>
      <pubDate>Tue, 25 Mar 2014 13:00:31 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-session-scoped-fixtures/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://pythontest.com/framework/pytest/pytest-fixture-scope/&#34;&gt;pytest fixture scope&lt;/a&gt;, I noted that you can specify session scope so that a fixture will only run once per test session and be available across multiple test functions, classes, and modules.&lt;/p&gt;&#xA;&lt;p&gt;In this post, I&amp;rsquo;m going to show a simple example so you can see it in action.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s the table from the &lt;a href=&#34;https://pythontest.com/framework/pytest/pytest-fixture-scope/&#34;&gt;previous post&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;h2 id=&#34;conftest&#34;&gt;A separate file for fixtures, conftest.py&lt;/h2&gt;&#xA;&lt;p&gt;With function, class, and module scope, it is completely reasonable for the fixture code to be in the same file as the tests.&lt;br&gt;&#xA;But now suddenly, with session, that doesn&amp;rsquo;t make sense anymore.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using pytest fixtures by naming them</title>
      <link>https://pythontest.com/framework/pytest/pytest-named-fixtures/</link>
      <pubDate>Wed, 05 Feb 2014 06:23:04 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-named-fixtures/</guid>
      <description>&lt;p&gt;The easiest way to use a fixture is to name it.&lt;/p&gt;&#xA;&lt;p&gt;We can put the fixture name in the parameter list for each test that needs it:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pytest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.fixture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;before&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;before each test&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;before&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;test_1()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;before&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;test_2()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The fixture is going to be called for every test that names the fixture in it&amp;rsquo;s parameter list.&lt;/p&gt;&#xA;&lt;p&gt;Output:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ pytest -s test_fixture.py &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=========== test session starts ============&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;collected 2 items                          &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;test_fixture.py &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;before each test&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;test_1()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;before each test&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;test_2()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;============ 2 passed in 0.05s =============&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;callout note &#34;&gt;&#xA;  &lt;p&gt;This post is part of a series on pytest fixtures&lt;/p&gt;</description>
    </item>
    <item>
      <title>Modularity - pytest fixtures using other fixtures</title>
      <link>https://pythontest.com/framework/pytest/pytest-fixture-modularity/</link>
      <pubDate>Wed, 05 Feb 2014 06:22:11 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-fixture-modularity/</guid>
      <description>&lt;p&gt;Tests can use one or more fixture.&lt;/p&gt;&#xA;&lt;p&gt;Fixtures themselves can also use one or more fixtures.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ll rewrite the example from &lt;a href=&#34;https://pythontest.com/framework/pytest/pytest-multiple-fixtures/&#34;&gt;Using multiple pytest fixtures&lt;/a&gt;, but instead of having the tests include all foo, bar, and baz fixtures, I&amp;rsquo;ll chain them together.&lt;/p&gt;&#xA;&lt;p&gt;And one more wrinkle, &amp;rsquo;test_two&amp;rsquo; will only include &amp;lsquo;bar&amp;rsquo;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.fixture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scope&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;module&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;foo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;foo setup - module fixture&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;yield&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;foo teardown - module fixture&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.fixture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;bar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;foo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;bar setup - function fixture&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;yield&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;bar teardown - function fixture&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.fixture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;baz&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;baz setup - function fixture&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;yield&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;baz teardown - function fixture&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_one&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;baz&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;in test_one()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_two&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# only use bar&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;in test_two()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;output&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using multiple pytest fixtures</title>
      <link>https://pythontest.com/framework/pytest/pytest-multiple-fixtures/</link>
      <pubDate>Wed, 05 Feb 2014 06:22:10 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-multiple-fixtures/</guid>
      <description>&lt;p&gt;In the examples I&amp;rsquo;ve used so far in this series , tests only are using at most one named fixture.&lt;/p&gt;&#xA;&lt;p&gt;You can use more.&lt;/p&gt;&#xA;&lt;p&gt;Simple example:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pytest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.fixture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scope&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;module&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;foo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;foo setup - module fixture&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;yield&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;foo teardown - module fixture&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.fixture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;bar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;bar setup - function fixture&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;yield&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;bar teardown - function fixture&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.fixture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;baz&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;baz setup - function fixture&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;yield&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;baz teardown - function fixture&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_one&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;foo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;baz&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;in test_one()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_two&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;foo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;baz&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;in test_two()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ pytest -s test_multiple.py&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;================== test session starts ==================&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;collected 2 items                                       &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;test_multiple.py &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;foo setup - module fixture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bar setup - function fixture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;baz setup - function fixture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;in test_one()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.baz teardown - function fixture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bar teardown - function fixture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bar setup - function fixture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;baz setup - function fixture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;in test_two()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.baz teardown - function fixture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bar teardown - function fixture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;foo teardown - module fixture&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=================== 2 passed in 0.06s ===================&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;callout note &#34;&gt;&#xA;  &lt;p&gt;This post is part of a series on pytest fixtures&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parametrizing pytest fixtures with params</title>
      <link>https://pythontest.com/framework/pytest/pytest-parametrize-fixtures/</link>
      <pubDate>Wed, 05 Feb 2014 06:22:09 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-parametrize-fixtures/</guid>
      <description>&lt;p&gt;An optional parameter to the fixture decorator is &lt;code&gt;params&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;For each value in params, the fixture will be called with &lt;code&gt;request.param&lt;/code&gt; filled in with that value.&lt;br&gt;&#xA;Tests that use the fixture will be called once FOR EACH value in &lt;code&gt;params&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;toy&#34;&gt;Toy example&lt;/h3&gt;&#xA;&lt;p&gt;An example is in order here.&lt;/p&gt;&#xA;&lt;p&gt;This first example is a silly one, but does show the mechanics, and the utility of both the -v flag and how well pytest deals with failures of parameterized tests.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest fixture scope</title>
      <link>https://pythontest.com/framework/pytest/pytest-fixture-scope/</link>
      <pubDate>Wed, 05 Feb 2014 06:22:08 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-fixture-scope/</guid>
      <description>&lt;p&gt;Scope controls how often a fixture gets called.&lt;/p&gt;&#xA;&lt;p&gt;The default is &amp;ldquo;function&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Here are the options for scope:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;scope&lt;/th&gt;&#xA;          &lt;th&gt;When setup and teardown run&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;function&lt;/td&gt;&#xA;          &lt;td&gt;(default) Setup before each function, teardown after each function&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;class&lt;/td&gt;&#xA;          &lt;td&gt;Setup before first test of class, teardown after last test of class&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;module&lt;/td&gt;&#xA;          &lt;td&gt;Setup/Teardown bracketing tests of a module&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;package&lt;/td&gt;&#xA;          &lt;td&gt;Setup/Teardown bracketing tests of a package/directory&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;session&lt;/td&gt;&#xA;          &lt;td&gt;Setup/Teardown at the beginning and end of the entire test session / test run&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Since the default scope is &amp;ldquo;function&amp;rdquo;, the &lt;a href=&#34;https://pythontest.com/framework/pytest/pytest-fixture-teardown/&#34;&gt;cheese db example&lt;/a&gt; will open and close the db for every test.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest fixture return value</title>
      <link>https://pythontest.com/framework/pytest/pytest-fixture-return-value/</link>
      <pubDate>Wed, 05 Feb 2014 06:22:07 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-fixture-return-value/</guid>
      <description>&lt;p&gt;In the &lt;a href=&#34;https://pythontest.com/framework/pytest/basic-pytest-fixtures-example/&#34;&gt;basic example&lt;/a&gt;, the fixture returns &lt;code&gt;None&lt;/code&gt;.&lt;br&gt;&#xA;It actually doesn&amp;rsquo;t have a return statement. So like any other function in Python, if you don&amp;rsquo;t supply a &lt;code&gt;return&lt;/code&gt; (or &lt;code&gt;yield&lt;/code&gt;) statement, it returns &lt;code&gt;None&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;However, you can return anything you want from the fixture function.&lt;br&gt;&#xA;If your fixture is setting up some data, or reading a file, or opening a connection to a database, then access to that data or resources is what you ought to return from the fixture.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest fixture teardown</title>
      <link>https://pythontest.com/framework/pytest/pytest-fixture-teardown/</link>
      <pubDate>Wed, 05 Feb 2014 06:22:07 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-fixture-teardown/</guid>
      <description>&lt;p&gt;In the &lt;a href=&#34;https://pythontest.com/framework/pytest/pytest-fixture-return-value/&#34;&gt;previous post about return value&lt;/a&gt; the &amp;lsquo;cheese_db&amp;rsquo; fixture looked like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.fixture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;cheese_db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# setup&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;[setup] cheese_db, connect to db&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# code to connect to your db &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;makeshift_cheese_db&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Brie&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;No.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Camenbert&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Ah! We have Camenbert, yessir.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return db to test code&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;makeshift_cheese_db&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s really not going to work if we have a real database or other resource that we need to possibly, actually &lt;code&gt;disconnect&lt;/code&gt; from when we&amp;rsquo;re done.&lt;/p&gt;&#xA;&lt;p&gt;For resources where we need some code to happen &amp;ldquo;when we&amp;rsquo;re done&amp;rdquo; with them, we use the teardown section of fixtures.&lt;br&gt;&#xA;The &amp;ldquo;teardown&amp;rdquo; section is just &amp;ldquo;anything after a yield&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using pytest fixtures with mark.usefixtures</title>
      <link>https://pythontest.com/framework/pytest/pytest-mark-usefixtures/</link>
      <pubDate>Wed, 05 Feb 2014 06:22:06 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-mark-usefixtures/</guid>
      <description>&lt;h3 id=&#34;usefixtures&#34;&gt;Usefixtures example&lt;/h3&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s go back to our &lt;a href=&#34;https://pythontest.com/framework/pytest/basic-pytest-fixtures-example/&#34;&gt;basic example&lt;/a&gt;, but explore the use of &lt;code&gt;usefixtures&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;usefixtures&lt;/code&gt; is a marker that accepts a list of fixture names as strings, and applies it to something.&lt;/p&gt;&#xA;&lt;p&gt;You can use it on an individual test. However, it&amp;rsquo;d be pretty silly as named parameters are easier.&lt;/p&gt;&#xA;&lt;p&gt;However, this is what it&amp;rsquo;d look like to mark individual tests:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# test_usefixtures.py&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pytest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.fixture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;before&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;before each test&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.mark.usefixtures&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;before&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@pytest.mark.usefixtures&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;before&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And it also works for test methods:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using pytest autouse fixtures</title>
      <link>https://pythontest.com/framework/pytest/pytest-autouse-fixtures/</link>
      <pubDate>Wed, 05 Feb 2014 06:22:05 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-autouse-fixtures/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;framework/pytest/pytest-named-fixtures/&#34;&gt;Naming a fixture&lt;/a&gt; is the most straight-forward way to use fixtures. However, it also requires that we have to add the fixture name to every test that we want to use the fixture.&lt;/p&gt;&#xA;&lt;p&gt;There are times when we want something to happen before every test, and the test itself doesn&amp;rsquo;t really need to know about it. For that, we can use &lt;code&gt;autouse&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;If you add &lt;code&gt;autouse=True&lt;/code&gt; as a parameter to &lt;code&gt;@pytest.fixture()&lt;/code&gt;, then all tests that have access to this fixture will use the fixture.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic pytest fixtures example</title>
      <link>https://pythontest.com/framework/pytest/basic-pytest-fixtures-example/</link>
      <pubDate>Wed, 05 Feb 2014 06:22:03 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/basic-pytest-fixtures-example/</guid>
      <description>&lt;h2 id=&#34;fixtures-hold-setup-code&#34;&gt;Fixtures hold setup code&lt;/h2&gt;&#xA;&lt;p&gt;Fixtures are a way to separate some code that we want to run before or after a test and put it in a different function than the test function itself.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s say we have a couple of tests with common setup code:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# setup code running before the test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;before each test&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# actual test code&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;test_1()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;test_2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# setup code running before the test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;before each test&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# actual test code&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;test_2()&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;we-could-use-xunit-fixtures-but-were-not-going-to&#34;&gt;We could use xunit fixtures, but we&amp;rsquo;re not going to&lt;/h2&gt;&#xA;&lt;p&gt;If we want to use &lt;a href=&#34;https://pythontest.com/framework/pytest/pytest-xunit-style-fixtures/&#34;&gt;xunit fixtures&lt;/a&gt;, we could create a setup function like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest xUnit style fixtures</title>
      <link>https://pythontest.com/framework/pytest/pytest-xunit-style-fixtures/</link>
      <pubDate>Sat, 28 Dec 2013 10:08:14 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-xunit-style-fixtures/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m going to cover the syntax for pytest support for xUnit style fixtures.&lt;br&gt;&#xA;Then I&amp;rsquo;ll give a more reasonable and typical example, using just one set of fixture functions.&lt;br&gt;&#xA;And then address the issue of having tests mixed in a file. Some that need the resource, and some that don&amp;rsquo;t.&lt;/p&gt;&#xA;&lt;p&gt;Depending on what scope you want your fixtures, you define setup/teardown pairs.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Module (setup_module/teardown_module)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Sets things up once for the module, teardown after everything.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Function (setup_function/teardown_function)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Wraps every test function with calls.&lt;/li&gt;&#xA;&lt;li&gt;Gets called multiple times, once for each function&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Class (setup_class/teardown_class)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Like module level, but for classes, once for a class.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Method (setup_method/teardown_method)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Like function level, but for classes.&lt;/li&gt;&#xA;&lt;li&gt;Gets called multiple times, once for each test method in a class&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;callout note &#34;&gt;&#xA;  &lt;p&gt;Unless you really need xUnit fixtures, I recommend completely ignoring this post.&lt;br&gt;&#xA;It&amp;rsquo;s way better to move on and use only native pytest fixtures.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest fixtures nuts and bolts</title>
      <link>https://pythontest.com/framework/pytest/pytest-fixtures/</link>
      <pubDate>Mon, 18 Nov 2013 01:54:23 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-fixtures/</guid>
      <description>&lt;p&gt;Dealing with fixtures is one of the areas where pytest really shines.&lt;br&gt;&#xA;This is rather an incredible understatement.&lt;/p&gt;&#xA;&lt;p&gt;The xunit style of test fixtures that is used in both unittest and nose is of course supported with with pytest. And pytest rocks at this.&lt;/p&gt;&#xA;&lt;p&gt;But there is another way to deal with fixtures. It&amp;rsquo;s to think of fixtures as a set of resources that need to be set up before a test starts, and cleaned up after. Test functions, methods, classes, name which fixtures they need. This way, fixtures aren&amp;rsquo;t set up for tests that don&amp;rsquo;t need them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The power of “Thank You”</title>
      <link>https://pythontest.com/community/power-of-thank-you/</link>
      <pubDate>Tue, 01 Oct 2013 23:39:59 +0000</pubDate>
      <guid>https://pythontest.com/community/power-of-thank-you/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Fozzie: Nobody reads those names anyway, do they?&lt;br&gt;&#xA;Kermit: Sure. They all have families.&lt;/p&gt;&#xA;&lt;p&gt;&amp;ndash; &lt;a href=&#34;http://www.imdb.com/title/tt0082474/quotes?qt=qt0449460&#34;&gt;The Great Muppet Caper&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Many projects have release notes that include the names of people that contributed to the release.&lt;/p&gt;&#xA;&lt;p&gt;Who reads these names? &lt;br&gt;&#xA;Well, at the very least, the people in that list read the names.&lt;/p&gt;&#xA;&lt;p&gt;If your project doesn&amp;rsquo;t do this, I think it should.&lt;br&gt;&#xA;My name was listed in a release notice today.&lt;br&gt;&#xA;I&amp;rsquo;ll share the details, and try to point out why saying thanks to contributors is a good idea.&lt;/p&gt;</description>
    </item>
    <item>
      <title>tip: dictionary get() works like getattr</title>
      <link>https://pythontest.com/python/dict-get-like-getattr/</link>
      <pubDate>Wed, 21 Aug 2013 19:14:26 +0000</pubDate>
      <guid>https://pythontest.com/python/dict-get-like-getattr/</guid>
      <description>&lt;p&gt;You can&amp;rsquo;t use &lt;code&gt;getattr()&lt;/code&gt; to look stuff up in a dictionary.&lt;br&gt;&#xA;But the &amp;lsquo;default&amp;rsquo; feature of &lt;code&gt;getattr()&lt;/code&gt; is so useful.&lt;br&gt;&#xA;What&amp;rsquo;s the dict way to do the same thing?&lt;/p&gt;&#xA;&lt;p&gt;This is one of &lt;a href=&#34;https://pythontest.com/python/annoyed-ternary-operator/&#34;&gt;those posts&lt;/a&gt; that I&amp;rsquo;m writing because I keep having to look it up.&lt;br&gt;&#xA;So if I write it, I&amp;rsquo;ll remember it. Hopefully.&lt;/p&gt;&#xA;&lt;h2 id=&#34;getattr&#34;&gt;getattr&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been using the &amp;lsquo;default&amp;rsquo; parameter to getattr for some time, and it&amp;rsquo;s super handy.&lt;br&gt;&#xA;This is handy in lots of places, and avoids having to wrap things in try/except blocks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I’m annoyed with Python’s ternary operator</title>
      <link>https://pythontest.com/python/annoyed-ternary-operator/</link>
      <pubDate>Tue, 02 Jul 2013 16:14:23 +0000</pubDate>
      <guid>https://pythontest.com/python/annoyed-ternary-operator/</guid>
      <description>&lt;p&gt;The ternary operator is a way to concisely say:&lt;br&gt;&#xA;“If &lt;strong&gt;test&lt;/strong&gt;, then &lt;strong&gt;a&lt;/strong&gt;, else &lt;strong&gt;b&lt;/strong&gt;“,&lt;br&gt;&#xA;with the value of the statement being the value of &lt;strong&gt;a&lt;/strong&gt; or &lt;strong&gt;b&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;language&lt;/th&gt;&#xA;          &lt;th&gt;how to say it&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;C&lt;/td&gt;&#xA;          &lt;td&gt;test ? a : b&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;C++&lt;/td&gt;&#xA;          &lt;td&gt;test ? a : b&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;javascript&lt;/td&gt;&#xA;          &lt;td&gt;test ? a : b&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Perl (not perl 6)&lt;/td&gt;&#xA;          &lt;td&gt;test ? a : b&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;PHP&lt;/td&gt;&#xA;          &lt;td&gt;test ? a : b&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Ruby&lt;/td&gt;&#xA;          &lt;td&gt;test ? a : b&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Did I forget some language?&lt;/td&gt;&#xA;          &lt;td&gt;probably&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Python&lt;/td&gt;&#xA;          &lt;td&gt;a if test else b &lt;strong&gt;(Why??)&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;why&#34;&gt;Why??&lt;/h2&gt;&#xA;&lt;p&gt;Ok. Now that I’ve written this post, I’ll remember it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest support for unittest style fixtures</title>
      <link>https://pythontest.com/framework/pytest/pytest-unittest-style-fixtures/</link>
      <pubDate>Wed, 26 Jun 2013 21:07:11 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-unittest-style-fixtures/</guid>
      <description>&lt;p&gt;unittest fixtures behave the same regardless if you run them from &lt;code&gt;python -m unittest&lt;/code&gt; or &lt;code&gt;pytest&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;There used to be more of a story here.&lt;/p&gt;&#xA;&lt;p&gt;Way back in 2013 with pytest 2.3.5 (when this post was originally written) there was an issue that the behavior of whether or not to run the teardown for unittest fixtures if the setup failed was different.&lt;/p&gt;&#xA;&lt;p&gt;However, that&amp;rsquo;s been fixed A LONG TIME AGO.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Run a single test class with unittest and pytest</title>
      <link>https://pythontest.com/framework/specify-test-unittest-pytest/</link>
      <pubDate>Wed, 19 Jun 2013 14:10:19 +0000</pubDate>
      <guid>https://pythontest.com/framework/specify-test-unittest-pytest/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve got the test code from my &lt;a href=&#34;https://pythontest.com/framework/unittest/unittest-fixtures&#34;&gt;unittest fixture syntax and flow reference&lt;/a&gt;, and I want to try to run one class, say &lt;code&gt;TestSkip&lt;/code&gt; from unittest and pytest to compare the the control flow.&lt;/p&gt;&#xA;&lt;p&gt;Therefore, I need for each framework:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The option to make it as quiet as possible&#xA;&lt;ul&gt;&#xA;&lt;li&gt;-q for both unittest and pytest&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;The option to turn off output capture&#xA;&lt;ul&gt;&#xA;&lt;li&gt;-s works for pytest, not needed for unittest&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;The way to call an individual class&#xA;&lt;ul&gt;&#xA;&lt;li&gt;details below&lt;/li&gt;&#xA;&lt;li&gt;note that moduleName == fileName (but without the extension)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;unittest&#34;&gt;unittest&lt;/h2&gt;&#xA;&lt;p&gt;Specify &lt;code&gt;moduleName.className&lt;/code&gt;, like so:&lt;/p&gt;</description>
    </item>
    <item>
      <title>What happens when unittest fixtures fail</title>
      <link>https://pythontest.com/framework/unittest/when-unittest-fixtures-fail/</link>
      <pubDate>Mon, 17 Jun 2013 16:50:05 +0000</pubDate>
      <guid>https://pythontest.com/framework/unittest/when-unittest-fixtures-fail/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://pythontest.com/framework/unittest/unittest-fixtures&#34;&gt;unittest fixture syntax and flow reference&lt;/a&gt;, I only presented fixture methods and functions that threw no exceptions.&lt;br&gt;&#xA;However, in real production code, it is entirely possible for something to go wrong when setting up test fixtures.&lt;/p&gt;&#xA;&lt;p&gt;This post is simply do demonstrate exactly what happens to the flow of your test code when an exception is thrown in a fixture function.&lt;/p&gt;&#xA;&lt;p&gt;And, while I&amp;rsquo;m at it, I may as well demo the normal control flow when a test fails, asserts, or throws an exception.&lt;/p&gt;</description>
    </item>
    <item>
      <title>unittest fixture syntax and flow reference</title>
      <link>https://pythontest.com/framework/unittest/unittest-fixtures/</link>
      <pubDate>Sun, 16 Jun 2013 00:15:33 +0000</pubDate>
      <guid>https://pythontest.com/framework/unittest/unittest-fixtures/</guid>
      <description>&lt;p&gt;This post contains examples of how unittest test fixture functions and methods are written, and in what order they run. It may seem like a long post, but it&amp;rsquo;s mostly code examples and example output.&lt;/p&gt;&#xA;&lt;p&gt;I want this to be a useful reference for both the syntax and flow of unittest fixtures.&lt;/p&gt;&#xA;&lt;h2 id=&#34;intro&#34;&gt;Intro: Software Test Fixtures&lt;/h2&gt;&#xA;&lt;p&gt;The term &lt;strong&gt;test fixtures&lt;/strong&gt; really means two things.&lt;br&gt;&#xA;Test fixtures are the resources and initial conditions that a test needs to operate correctly and independently from other tests.&lt;br&gt;&#xA;The phrase has also grown to mean the functions and methods that are used to do that resource and environment handling.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Complete coverage testing from the bottom of the pyramid up is a bad idea</title>
      <link>https://pythontest.com/strategy/complete-coverage-testing/</link>
      <pubDate>Tue, 21 May 2013 14:14:49 +0000</pubDate>
      <guid>https://pythontest.com/strategy/complete-coverage-testing/</guid>
      <description>&lt;p&gt;or &lt;strong&gt;Complete coverage testing&lt;/strong&gt;&lt;br&gt;&#xA;or &lt;strong&gt;More is Better testing&lt;/strong&gt;&lt;br&gt;&#xA;or &lt;strong&gt;How not to test, part 1&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-setup&#34;&gt;The setup&lt;/h2&gt;&#xA;&lt;p&gt;For the sake of this post, let&amp;rsquo;s say I&amp;rsquo;ve got a Python package that needs testing.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;It&amp;rsquo;s written completely in Python&lt;/li&gt;&#xA;&lt;li&gt;It has a specification fully describing the API&lt;/li&gt;&#xA;&lt;li&gt;The specification is so complete that it also covers behaviors and side effects&lt;/li&gt;&#xA;&lt;li&gt;The API is the only interface this program exposes&lt;/li&gt;&#xA;&lt;li&gt;It was written by us&lt;/li&gt;&#xA;&lt;li&gt;It was written recently&lt;/li&gt;&#xA;&lt;li&gt;It only uses base Python&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Therefore:&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest debug print logging in real time</title>
      <link>https://pythontest.com/framework/pytest/pytest-logging-real-time/</link>
      <pubDate>Thu, 04 Apr 2013 02:23:18 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-logging-real-time/</guid>
      <description>&lt;p&gt;There are many circumstances where it&amp;rsquo;s really great to display the print statements and logging from a test while a test is running, and not wait until the end.&lt;/p&gt;&#xA;&lt;h2 id=&#34;printing-and-logging-in-test-code&#34;&gt;Printing and logging in test code&lt;/h2&gt;&#xA;&lt;p&gt;Before you pipe in with &amp;ldquo;unit tests should be fast&amp;rdquo;, I&amp;rsquo;ll just remind you that pytest can be used for system tests, performance tests, and other long running tests, and can be used to test both software and hardware.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python regex Search and Replace Examples</title>
      <link>https://pythontest.com/python/regex-search-replace/</link>
      <pubDate>Fri, 08 Feb 2013 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/python/regex-search-replace/</guid>
      <description>&lt;p&gt;Search and replace is such a common task that it should be a tool that&amp;rsquo;s in every command line script author&amp;rsquo;s toolbox.&lt;br&gt;&#xA;There are probably endless solutions to the problem.&lt;br&gt;&#xA;I&amp;rsquo;ve put together my standard methods for tackling the problem.&lt;br&gt;&#xA;I&amp;rsquo;ll also show similar Perl versions, mainly for comparisons.&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-models&#34;&gt;use models&lt;/h2&gt;&#xA;&lt;p&gt;In most of the following discussion, I&amp;rsquo;m just replacing &amp;lsquo;foo&amp;rsquo; with &amp;lsquo;bar&amp;rsquo;.&lt;br&gt;&#xA;&lt;strong&gt;However &amp;lsquo;foo&amp;rsquo; can be ANY regular expression.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl regex Search and Replace Examples</title>
      <link>https://pythontest.com/perl/regex-search-replace/</link>
      <pubDate>Thu, 07 Feb 2013 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/perl/regex-search-replace/</guid>
      <description>&lt;p&gt;Search and replace is such a common task that it should be a tool that&amp;rsquo;s in every command line script author&amp;rsquo;s toolbox.&lt;br&gt;&#xA;There are probably endless solutions to the problem.&lt;br&gt;&#xA;I&amp;rsquo;ve put together my standard methods for tackling the problem, with Perl.&#xA;&lt;a href=&#34;https://pythontest.com/blog/2013-02-07-python-regex-search-replace-examples.md&#34;&gt;You can also use Python&lt;/a&gt;, of course, as well as other tools like &lt;code&gt;sed&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-models&#34;&gt;Use Models&lt;/h2&gt;&#xA;&lt;p&gt;In most of the following discussion, I&amp;rsquo;m just replacing &amp;lsquo;foo&amp;rsquo; with &amp;lsquo;bar&amp;rsquo;.&lt;br&gt;&#xA;&lt;strong&gt;However &amp;lsquo;foo&amp;rsquo; can be ANY regular expression.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Don&#39;t use nose</title>
      <link>https://pythontest.com/framework/nose/nose-not-recommended/</link>
      <pubDate>Tue, 29 Jan 2013 15:51:12 +0000</pubDate>
      <guid>https://pythontest.com/framework/nose/nose-not-recommended/</guid>
      <description>&lt;p&gt;As of 2025, nose hasn&amp;rsquo;t been updated for about 10 years.&lt;/p&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t recommend using it.&lt;br&gt;&#xA;I recommend trying out pytest. :)&lt;/p&gt;&#xA;&lt;p&gt;A note on the &lt;a href=&#34;https://nose.readthedocs.io/en/latest/#note-to-users&#34;&gt;nose docs&lt;/a&gt; page recommends using a different project, such pytest or unittest:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Note to Users&lt;/p&gt;&#xA;&lt;p&gt;Nose has been in maintenance mode for the past several years and will likely cease without a new person/team to take over maintainership. New projects should consider using Nose2, py.test, or just plain unittest/unittest2.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running doctest from pytest</title>
      <link>https://pythontest.com/framework/pytest/running-doctest-from-pytest/</link>
      <pubDate>Tue, 15 Jan 2013 13:39:34 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/running-doctest-from-pytest/</guid>
      <description>&lt;p&gt;You can run some doctests from pytest, according to the documentation.&lt;br&gt;&#xA;However, it can be a bit fiddly.&lt;/p&gt;&#xA;&lt;p&gt;With my examples of &lt;a href=&#34;https://pythontest.com/framework/doctest/doctest-introduction/&#34;&gt;putting doctests in text files&lt;/a&gt;, if I just try running:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ pytest test_unnecessary_math.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I get the error:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;... ModuleNotFoundError: No module named &amp;#39;unnecessary_math&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It doesn&amp;rsquo;t seem to like the line &amp;ldquo;from unnecessary_math import multiply&amp;rdquo; from the &lt;code&gt;.txt&lt;/code&gt; file, even thought he file &lt;code&gt;unnecessary_math&lt;/code&gt; is in the same directory.&lt;/p&gt;&#xA;&lt;p&gt;However, if I throw that same like into a &lt;code&gt;conftest.py&lt;/code&gt; file, it seems to work:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running unittest from pytest</title>
      <link>https://pythontest.com/framework/pytest/running-unittest-from-pytest/</link>
      <pubDate>Tue, 15 Jan 2013 13:38:34 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/running-unittest-from-pytest/</guid>
      <description>&lt;p&gt;To show how pytest handles unittests, here&amp;rsquo;s a sample run of pytest on the simple unittests I wrote in the &lt;a href=&#34;https://pythontest.com/framework/unittest/unittest-introduction/&#34;&gt;unittest introduction&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ pytest test_um_unittest.py &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;======================== test session starts =========================&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;collected 2 items                                                    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;test_um_unittest.py ..                                         [100%]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;========================= 2 passed in 0.04s ==========================&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ pytest -v test_um_unittest.py&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;======================== test session starts =========================&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;collected 2 items                                                    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;test_um_unittest.py::TestUM::test_numbers_3_4 PASSED           [ 50%]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;test_um_unittest.py::TestUM::test_strings_a_3 PASSED           [100%]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;========================= 2 passed in 0.05s ==========================&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As you can see, I didn&amp;rsquo;t provide any extra options, pytest finds unittests automatically.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest introduction</title>
      <link>https://pythontest.com/framework/pytest/pytest-introduction/</link>
      <pubDate>Tue, 15 Jan 2013 13:36:34 +0000</pubDate>
      <guid>https://pythontest.com/framework/pytest/pytest-introduction/</guid>
      <description>&lt;p&gt;I think of pytest as the run-anything, no boilerplate, no required api, use-this-unless-you-have-a-reason-not-to test framework.&lt;br&gt;&#xA;This is really where testing gets fun.&lt;br&gt;&#xA;As with previous intro&amp;rsquo;s on this site, I&amp;rsquo;ll run through an overview, then a simple example, then throw pytest at my markdown.py project.&lt;br&gt;&#xA;I&amp;rsquo;ll also cover fixtures, test discovery, and running unittests with pytest.&lt;/p&gt;&#xA;&lt;h2 id=&#34;no_boilerplate&#34;&gt;No boilerplate, no required api&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://pythontest.com/framework/doctest/doctest-introduction/&#34;&gt;doctest&lt;/a&gt; and &lt;a href=&#34;https://pythontest.com/framework/unittest/unittest-introduction/&#34;&gt;unittest&lt;/a&gt; both come with Python.&lt;br&gt;&#xA;They are pretty powerful on their own, and I think you should at least know about those frameworks, and learn how to run them at least on some toy examples, as it gives you a mental framework to view other test frameworks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Confession … I still use perl on the command line</title>
      <link>https://pythontest.com/perl/command-line-perl/</link>
      <pubDate>Wed, 09 Jan 2013 00:00:04 +0000</pubDate>
      <guid>https://pythontest.com/perl/command-line-perl/</guid>
      <description>&lt;h2 id=&#34;i-have-a-confession-to-make&#34;&gt;I have a confession to make.&lt;/h2&gt;&#xA;&lt;p&gt;I still use Perl. Regularly. But mostly as a command line tool. &lt;em&gt;Is that a reason? or an excuse?&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;When I started using Python regularly, I tried to replace my Perl usage.&lt;br&gt;&#xA;Nothing against Perl, I just wanted to force myself to use Python to aid in my learning of the language.&lt;/p&gt;&#xA;&lt;p&gt;I still have quite a few Perl habits that are hard to break.&lt;/p&gt;</description>
    </item>
    <item>
      <title>unittest introduction</title>
      <link>https://pythontest.com/framework/unittest/unittest-introduction/</link>
      <pubDate>Fri, 04 Jan 2013 05:22:18 +0000</pubDate>
      <guid>https://pythontest.com/framework/unittest/unittest-introduction/</guid>
      <description>&lt;p&gt;The unittest test framework is python&amp;rsquo;s xUnit style framework.&lt;br&gt;&#xA;It is a standard module that you already have if you&amp;rsquo;ve got python version 2.1 or greater.&lt;br&gt;&#xA;In this post, I&amp;rsquo;ll cover the basics of how to create and run a simple test using unittest.&lt;br&gt;&#xA;Then I&amp;rsquo;ll show how I&amp;rsquo;m using it to test markdown.py.&lt;/p&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview of unittest&lt;/h2&gt;&#xA;&lt;p&gt;The unittest module used to be called PyUnit, due to it&amp;rsquo;s legacy as a xUnit style framework.&lt;br&gt;&#xA;It works much the same as the other styles of xUnit, and if you&amp;rsquo;re familiar with unit testing in other languages, this framework (or derived versions), may be the most comfortable for you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>doctest introduction</title>
      <link>https://pythontest.com/framework/doctest/doctest-introduction/</link>
      <pubDate>Tue, 11 Dec 2012 09:16:43 +0000</pubDate>
      <guid>https://pythontest.com/framework/doctest/doctest-introduction/</guid>
      <description>&lt;p&gt;The doctest test framework is a Python module that comes prepackaged with Python. This post covers the basics of how to put doctests in your code, and outside of your code in a separate file.&lt;/p&gt;&#xA;&lt;p&gt;We start with a simple working example using a silly script called &lt;code&gt;unnecessary_math.py&lt;/code&gt;.&#xA;Then we go on to show how I&amp;rsquo;m using doctest to test markdown.py.&lt;/p&gt;&#xA;&lt;h2 id=&#34;concept&#34;&gt;conceptual model of Python doctest&lt;/h2&gt;&#xA;&lt;p&gt;This is from &lt;a href=&#34;http://docs.python.org/2/library/doctest.html#module-doctest&#34;&gt;python.org&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The doctest module searches for pieces of text that look like interactive Python sessions,&lt;br&gt;&#xA;and then executes those sessions to verify that they work exactly as shown.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Software API/CLI interface adapters</title>
      <link>https://pythontest.com/strategy/software-api-cli-interface-adapters/</link>
      <pubDate>Tue, 27 Nov 2012 14:07:19 +0000</pubDate>
      <guid>https://pythontest.com/strategy/software-api-cli-interface-adapters/</guid>
      <description>&lt;p&gt;While writing software, we are faced with lots and lots of interfaces.&lt;br&gt;&#xA;The public interface for some tool or module or package or whatever is usually referred to as the API, the CLI, or simply the user interface.&lt;br&gt;&#xA;In this post, when considering an interface, I am specifically referring to APIs and CLIs.&lt;/p&gt;&#xA;&lt;p&gt;Sometimes, we find a software component that does exactly what we want, but the interface is not what we want.&lt;br&gt;&#xA;That&amp;rsquo;s where software interface adapters come to the rescue.&lt;br&gt;&#xA;Adapters are helpful in many stages of the design and development of just about anything.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stub for markdown.py</title>
      <link>https://pythontest.com/strategy/stub-markdown/</link>
      <pubDate>Thu, 25 Oct 2012 16:32:15 +0000</pubDate>
      <guid>https://pythontest.com/strategy/stub-markdown/</guid>
      <description>&lt;p&gt;To explore the concepts of functional testing using python and python testing frameworks, I&amp;rsquo;m building a project to test, markdown.py on &lt;a href=&#34;https://github.com/okken/markdown.py&#34;&gt;github&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In this post, I&amp;rsquo;m discussing the stub implementation that I will use to set up the testing frameworks.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve got my &lt;a href=&#34;https://pythontest.com/strategy/markdown-requirements/&#34;&gt;markdown.py requirements&lt;/a&gt; written.&lt;br&gt;&#xA;An initial set, at least. Enough to get me started.&lt;/p&gt;&#xA;&lt;p&gt;I want to move on to explore testing frameworks and testing strategy.&lt;/p&gt;&#xA;&lt;p&gt;But to do that, it will be helpful to have something to test. So I&amp;rsquo;m going to write a stub for my script. Something that has the right name and interface. I can use it just as I will use the completed script. It just doesn&amp;rsquo;t work yet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Markdown requirements</title>
      <link>https://pythontest.com/strategy/markdown-requirements/</link>
      <pubDate>Thu, 25 Oct 2012 12:00:16 +0000</pubDate>
      <guid>https://pythontest.com/strategy/markdown-requirements/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve decided to write my own Markdown script,&lt;br&gt;&#xA;possibly for &lt;a href=&#34;https://pythontest.com/markdown/why-markdown/&#34;&gt;dubious reasons&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m getting antsy to code.&lt;/p&gt;&#xA;&lt;p&gt;But before I get started on the testing and implementation, I want to:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;write the requirements&lt;/li&gt;&#xA;&lt;li&gt;write a simple stub implementation&lt;/li&gt;&#xA;&lt;li&gt;write a testing strategy&lt;/li&gt;&#xA;&lt;li&gt;explore test frameworks&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Then, FINALLY, I can start testing and implementing.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s take a look at the requirements.&lt;/p&gt;&#xA;&lt;h2 id=&#34;requirements-for-markdown&#34;&gt;Requirements for Markdown&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Written in Python&lt;/li&gt;&#xA;&lt;li&gt;Use only Python standard library packages&lt;/li&gt;&#xA;&lt;li&gt;All contained in one python file&lt;/li&gt;&#xA;&lt;li&gt;Implement enough of the original Markdown functionality to be useful&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;That&amp;rsquo;s it for now.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why Markdown</title>
      <link>https://pythontest.com/markdown/why-markdown/</link>
      <pubDate>Wed, 17 Oct 2012 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/markdown/why-markdown/</guid>
      <description>&lt;p&gt;Markdown has very little to do with python testing.&lt;br&gt;&#xA;But I need a project to test, so I&amp;rsquo;m writing my own Markdown script.&lt;br&gt;&#xA;This is a brief introduction to Markdown from my perspective.&lt;/p&gt;&#xA;&lt;h2 id=&#34;writing-html-sucks-use-markdown&#34;&gt;Writing HTML sucks. Use Markdown.&lt;/h2&gt;&#xA;&lt;p&gt;HTML is obviously pretty helpful and critical for the web.&lt;br&gt;&#xA;One goal for HTML was that humans could reasonably easily read, write, and edit it.&lt;br&gt;&#xA;And that kinda works. Sometimes.&lt;br&gt;&#xA;But it&amp;rsquo;s not fun to read or write HTML.  Actually, writing stuff in HTML by hand sucks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Archive</title>
      <link>https://pythontest.com/archive/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/archive/</guid>
      <description></description>
    </item>
    <item>
      <title>Get In Touch</title>
      <link>https://pythontest.com/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/contact/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;BlueSky: &lt;a href=&#34;https://bsky.app/profile/brianokken.bsky.social&#34;&gt;brianokken.bsky.social&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Mastodon: &lt;a rel=&#34;me&#34; href=&#34;https://fosstodon.org/@brianokken&#34;&gt;@brianokken@fosstodon.org&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;LinkedIn: &lt;a href=&#34;https://www.linkedin.com/in/okken/&#34;&gt;linkedin.com/in/okken&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Sign up for the infrequent the &lt;a href=&#34;https://pythontest.com/newsletter/&#34;&gt;newsletter&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Or email: (below)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;style&gt;&#xA;.form button&#xA;{&#xA;    border: 1px solid gray;&#xA;    background: #daa0f5;&#xA;    color: black;&#xA;    border-radius: 5px;&#xA;    padding: 10px;&#xA;    margin: 10px 0px;&#xA;    width: 100%&#xA;}&#xA;.form input[type=&#34;text&#34;],&#xA;.form input[type=&#34;email&#34;],&#xA;.form textarea&#xA;{&#xA;    border: 1px solid gray;&#xA;    background: white;&#xA;    border-radius: 5px;&#xA;    padding: 10px;&#xA;    width: 100%&#xA;}&#xA;&lt;/style&gt;&#xA;&lt;div class=&#34;form&#34;&gt;&#xA;&lt;form name=&#34;contact&#34; method=&#34;POST&#34; netlify&gt;&#xA;  &lt;p&gt;&#xA;    &lt;label&gt;Your Name: &lt;input type=&#34;text&#34; name=&#34;name&#34; placeholder=&#34;Foo Bar&#34;/&gt;&lt;/label&gt;&#xA;  &lt;/p&gt;&#xA;  &lt;p&gt;&#xA;    &lt;label&gt;Your Email: &lt;input type=&#34;email&#34; name=&#34;email&#34; placeholder=&#34;foo@bar.baz&#34;/&gt;&lt;/label&gt;&#xA;  &lt;/p&gt;&#xA;  &lt;p&gt;&#xA;    &lt;label&gt;Message: &lt;textarea name=&#34;message&#34; placeholder=&#34;pytest is so awesome because ...&#34;&gt;&lt;/textarea&gt;&lt;/label&gt;&#xA;  &lt;/p&gt;&#xA;  &lt;p&gt;&#xA;    &lt;button type=&#34;submit&#34; class=&#34;wide&#34;&gt;Send&lt;/button&gt;&#xA;  &lt;/p&gt;&#xA;&lt;/form&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Newsletter</title>
      <link>https://pythontest.com/newsletter/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/newsletter/</guid>
      <description>&lt;script async data-uid=&#34;58650eb036&#34; src=&#34;https://pythontest.kit.com/58650eb036/index.js&#34;&gt;&lt;/script&gt;&#xA;&lt;p&gt;Sign up to receive updates about:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;blog posts&lt;/li&gt;&#xA;&lt;li&gt;new courses&lt;/li&gt;&#xA;&lt;li&gt;exciting news&lt;/li&gt;&#xA;&lt;li&gt;possibly not so exciting news but for some reason Brian thinks it&amp;rsquo;s important.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Basically, keep up with what I&amp;rsquo;m up to on a very infrequent basis.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Podcasts</title>
      <link>https://pythontest.com/podcasts/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/podcasts/</guid>
      <description>&lt;h2 id=&#34;python-byteshttpspythonbytesfm&#34;&gt;&lt;a href=&#34;https://pythonbytes.fm&#34;&gt;Python Bytes&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;a href=&#34;https://pythonbytes.fm/&#34;&gt;&#xA;&lt;img loading=&#34;lazy&#34; src=&#34;https://pythontest.sfo3.cdn.digitaloceanspaces.com/python_bytes.png&#34; alt=&#34;Python Bytes&#34; align=&#34;right&#34; width=&#34;250&#34; height=&#34;188&#34;&gt;&#xA;&lt;/a&gt;&#xA;&lt;p&gt;Python headlines delivered directly to your earbuds.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Topics: All of Python&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Developer tools&lt;/li&gt;&#xA;&lt;li&gt;Python projects&lt;/li&gt;&#xA;&lt;li&gt;Open Source&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Stick around until the end, as we usually have a joke or something funny to close out the show.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;python-peoplehttpspythonpeoplefm&#34;&gt;&lt;a href=&#34;https://pythonpeople.fm&#34;&gt;Python People&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;a href=&#34;https://pythonpeople.fm/&#34;&gt;&#xA;&lt;img loading=&#34;lazy&#34; src=&#34;https://pythontest.sfo3.cdn.digitaloceanspaces.com/python_people.png&#34; alt=&#34;Python Bytes&#34; align=&#34;right&#34; width=&#34;250&#34; height=&#34;188&#34;&gt;&#xA;&lt;/a&gt;&#xA;&lt;p&gt;The Python community is awesome because of the people.&lt;br&gt;&#xA;Python People is a weekly podcast about getting to know the people who help make the Python community great.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest courses</title>
      <link>https://pythontest.com/courses/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/courses/</guid>
      <description>&lt;h2 id=&#34;the-complete-pytest-coursehttpscoursespythontestcomthe-complete-pytest-course&#34;&gt;&lt;a href=&#34;https://courses.pythontest.com/the-complete-pytest-course&#34;&gt;The Complete pytest Course&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;pytest-primary-power-chapters-1---6&#34;&gt;pytest Primary Power (Chapters 1 - 6)&lt;/h3&gt;&#xA;&lt;p&gt;Everything you need to get started with pytest and use it effectively.&lt;/p&gt;&#xA;&lt;p&gt;Learn about:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Test Functions&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Structure functions effectively&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Fixtures&#xA;&lt;ul&gt;&#xA;&lt;li&gt;setup, teardown, and so much more&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Builtin Fixtures&#xA;&lt;ul&gt;&#xA;&lt;li&gt;many common testing tasks are pre-built and ready to use&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Parametrization&#xA;&lt;ul&gt;&#xA;&lt;li&gt;turn one test into many test cases&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Markers&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Builtin markers provided by pytest&lt;/li&gt;&#xA;&lt;li&gt;Custom markers for test selection&lt;/li&gt;&#xA;&lt;li&gt;Combining markers and fixtures to alter pytest behavior&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;pytest-working-with-projects-chapters-7---13&#34;&gt;pytest Working with Projects (Chapters 7 - 13)&lt;/h2&gt;&#xA;&lt;p&gt;Applying pytest to software projects.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python Testing with pytest, 2nd Edition</title>
      <link>https://pythontest.com/pytest-book/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/pytest-book/</guid>
      <description>&lt;a href=&#34;https://pragprog.com/titles/bopytest2/python-testing-with-pytest-second-edition/&#34;&gt;&#xA;&lt;img loading=&#34;lazy&#34; src=&#34;https://pythontest.sfo3.cdn.digitaloceanspaces.com/pytest_book_2.jpg&#34; alt=&#34;pytest book 2nd edition&#34; align=&#34;right&#34; width=&#34;250&#34; height=&#34;300&#34;&gt;&#xA;&lt;/a&gt;&#xA;&lt;p&gt;Availabile through:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pragprog.com/titles/bopytest2/python-testing-with-pytest-second-edition/&#34;&gt;Pragmatic&lt;/a&gt; - includes pdf, epub, mobi (works with kindle)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://bookshop.org/books/python-testing-with-pytest-simple-rapid-effective-and-scalable-9781680508604/9781680508604&#34;&gt;bookshop.org&lt;/a&gt; - paperback&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.amazon.com/Python-Testing-pytest-Effective-Scalable/dp/1680508601&#34;&gt;Amazon&lt;/a&gt; - paperback &amp;amp; kindle&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.barnesandnoble.com/w/python-testing-with-pytest-brian-okken/1126095838&#34;&gt;Barnes &amp;amp; Noble&lt;/a&gt; - paperback&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.waterstones.com/book/python-testing-with-pytest/brian-okken/9781680508604&#34;&gt;Waterstones&lt;/a&gt; - paperback&lt;/li&gt;&#xA;&lt;li&gt;It might be at your local bookstore&lt;/li&gt;&#xA;&lt;li&gt;Or request it from your library&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;the-most-gentle-and-comprehensive-tutorial-on-pytest&#34;&gt;The most gentle and comprehensive tutorial on pytest&lt;/h2&gt;&#xA;&lt;p&gt;I based the content, layout, and project within &amp;ldquo;Python Testing with pytest&amp;rdquo; on some assumptions about who might be reading this book.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Support PythonTest / Test &amp; Code</title>
      <link>https://pythontest.com/support/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://pythontest.com/support/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;ve found &lt;a href=&#34;https://pythontest.com/&#34;&gt;PythonTest&lt;/a&gt; or the &lt;a href=&#34;https://pythontest.com/testandcode&#34;&gt;Test &amp;amp; Code podcast&lt;/a&gt; useful, please consider helping to support future content and keep current content online.&lt;/p&gt;&#xA;&lt;h2 id=&#34;learn-pytest&#34;&gt;Learn pytest&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pythontest.com/pytest-book/&#34;&gt;Python Testing with pytest, 2nd Edition&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The pytest book.&lt;/li&gt;&#xA;&lt;li&gt;Great for learning pytest offline&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://courses.pythontest.com/&#34;&gt;pytest Courses&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;video courses&lt;/li&gt;&#xA;&lt;li&gt;Great for learning pytest online&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;join-the-pythontest-community&#34;&gt;Join the PythonTest Community&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://courses.pythontest.com/python-test-community/&#34;&gt;PythonTest Community&lt;/a&gt; is currently a Discord community&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;focused on pytest&lt;/li&gt;&#xA;&lt;li&gt;ask/answer pytest and other testing questions&lt;/li&gt;&#xA;&lt;li&gt;Community membership is included in &lt;a href=&#34;https://courses.pythontest.com/&#34;&gt;pytest Courses&lt;/a&gt;, but if you&amp;rsquo;ve gotten the book, and still have a question, this is a great way to ask.&lt;/li&gt;&#xA;&lt;li&gt;Joining the community also helps support Brian to continue producing Python, pytest, and other great content.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;how-about-an-infrequent-newsletter&#34;&gt;How about an infrequent newsletter?&lt;/h2&gt;&#xA;&lt;p&gt;Even if there&amp;rsquo;s nothing you need here yet, maybe there will be.&lt;br&gt;&#xA;Sign up for a very infrequent &lt;a href=&#34;https://pythontest.com/newsletter/&#34;&gt;newsletter&lt;/a&gt; to make sure you don&amp;rsquo;t miss something fun.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
