<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python Developer Tooling Handbook – Testing</title>
    <link>https://pydevtools.com/tags/testing/</link>
    <description>The Python Developer Tooling Handbook is a comprehensive guide to Python development tools including uv, ruff, pytest, mypy, ty, and more.</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Mon, 16 Feb 2026 08:00:00 -0500</lastBuildDate>
    
	  <atom:link href="https://pydevtools.com/tags/testing/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Seven Claude Code Skills for Python from the Creator of spaCy</title>
      <link>https://pydevtools.com/blog/matthew-honnibal-claude-skills-for-python/</link>
      <pubDate>Mon, 16 Feb 2026 08:00:00 -0500</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/blog/matthew-honnibal-claude-skills-for-python/</guid>
      <description>&lt;p&gt;atthew Honnibal, co-founder of &lt;a href=&#34;https://explosion.ai/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Explosion&lt;/a&gt; and creator of &lt;a href=&#34;https://spacy.io/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;spaCy&lt;/a&gt;, has published &lt;a href=&#34;https://github.com/honnibal/claude-skills&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;a collection of Claude Code skills&lt;/a&gt; for Python development. It&amp;rsquo;s one of the more thoughtful skill collections I&amp;rsquo;ve seen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://code.claude.com/docs/en/skills&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Claude Code skills&lt;/a&gt; are markdown files you place in &lt;code&gt;~/.claude/commands/&lt;/code&gt;. When you type &lt;code&gt;/&amp;lt;skill-name&amp;gt;&lt;/code&gt; in Claude Code, the file&amp;rsquo;s contents are injected as instructions. Think of them as reusable prompts that give Claude a specific methodology for a task, rather than leaving it to improvise.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flexible Python Version Management with uv and tox</title>
      <link>https://pydevtools.com/blog/flexible-version-management-for-tox/</link>
      <pubDate>Wed, 12 Feb 2025 10:20:00 +0000</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/blog/flexible-version-management-for-tox/</guid>
      <description>&lt;p&gt;When working with Python projects that use &lt;a href=&#34;https://pydevtools.com/handbook/reference/tox/&#34;&gt;tox&lt;/a&gt; for testing, you may encounter version mismatch errors like:&lt;/p&gt;
&lt;div class=&#34;hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code&#34;&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-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;lint-format: skipped because could not find python interpreter with spec(s): python3.8
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;hextra-code-copy-btn-container  hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0&#34;&gt;
  &lt;button
    class=&#34;hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50&#34;
    title=&#34;Copy code&#34;
    aria-label=&#34;Copy code&#34;
    data-copied-label=&#34;Copied!&#34;
  &gt;
    &lt;div class=&#34;hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
&lt;div class=&#34;hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This happens when tox expects a specific Python version that isn&amp;rsquo;t available in your environment. Traditionally, this would require:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Effective Python Developer Tooling in December 2024</title>
      <link>https://pydevtools.com/blog/effective-python-developer-tooling-in-december-2024/</link>
      <pubDate>Fri, 20 Dec 2024 19:25:00 +0000</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/blog/effective-python-developer-tooling-in-december-2024/</guid>
      <description>&lt;p&gt;I have been writing Python for 14 years next month. When I started, people were still using easy_install to install egg-based packages for Python 2.7 and nobody had heard about Conda yet, much less uv. The Python tool ecosystem has changed since. Many people are confused by the &lt;a href=&#34;https://xkcd.com/1987/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;fragmentation&lt;/a&gt; in the ecosystem, but we have better tooling for Python today than we&amp;rsquo;ve ever had before.&lt;/p&gt;
&lt;p&gt;A friend recently invited me to give a talk to his team about Python tooling. In the presentation, I shared some principles of Python tooling and developer efficiency, some anti-patterns I&amp;rsquo;ve observed, recommended practices, and an opinionated list of tools I like in December 2024. What follows is a summary of that talk.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
