<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tests-Internes on Ocarina — précis</title>
    <link>https://mojo-molotov.github.io/from-ocarina-to-igor/fr/tags/tests-internes/</link>
    <description>Recent content in Tests-Internes on Ocarina — précis</description>
    <generator>Hugo</generator>
    <language>fr-FR</language>
    <lastBuildDate>Mon, 01 Jun 2026 19:25:20 +0200</lastBuildDate>
    <atom:link href="https://mojo-molotov.github.io/from-ocarina-to-igor/fr/tags/tests-internes/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Chapitre 04 — Tests internes du framework</title>
      <link>https://mojo-molotov.github.io/from-ocarina-to-igor/fr/04-internal-tests/</link>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate>
      <guid>https://mojo-molotov.github.io/from-ocarina-to-igor/fr/04-internal-tests/</guid>
      <description>&lt;h1 id=&#34;chapitre-04tests-internes-du-framework&#34;&gt;Chapitre 04 — Tests internes du framework&lt;a class=&#34;anchor&#34; href=&#34;#chapitre-04tests-internes-du-framework&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&#xA;&lt;p&gt;Comment Ocarina se teste lui-même. Cinq familles de tests, une politique de couverture lucide, un rapport Allure historisé sur GitHub Pages.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&lt;h2 id=&#34;plan&#34;&gt;Plan&lt;a class=&#34;anchor&#34; href=&#34;#plan&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: center&#34;&gt;#&lt;/th&gt;&#xA;          &lt;th&gt;Fichier&lt;/th&gt;&#xA;          &lt;th&gt;Sujet&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;01&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://mojo-molotov.github.io/from-ocarina-to-igor/fr/04-internal-tests/01-strategy/&#34;&gt;&lt;code&gt;01-strategy.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Stratégie « &lt;em&gt;dehors comme un utilisateur&lt;/em&gt; » + le &lt;code&gt;conftest.py&lt;/code&gt; (FakeDriver, RecordingPOM, builders).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;02&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://mojo-molotov.github.io/from-ocarina-to-igor/fr/04-internal-tests/02-cram-prysk/&#34;&gt;&lt;code&gt;02-cram-prysk.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Cram tests (&lt;code&gt;prysk&lt;/code&gt;) : fichiers &lt;code&gt;.t&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;03&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://mojo-molotov.github.io/from-ocarina-to-igor/fr/04-internal-tests/03-pytest-scenarios/&#34;&gt;&lt;code&gt;03-pytest-scenarios.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Scénarios de test appliqués au framework (pytest + allure + hypothesis).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;04&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://mojo-molotov.github.io/from-ocarina-to-igor/fr/04-internal-tests/04-mypy-plugins-types/&#34;&gt;&lt;code&gt;04-mypy-plugins-types.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Tests sur le &lt;strong&gt;typage statiques&lt;/strong&gt; via &lt;code&gt;pytest-mypy-plugins&lt;/code&gt; (&lt;code&gt;*.yml&lt;/code&gt;).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;05&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://mojo-molotov.github.io/from-ocarina-to-igor/fr/04-internal-tests/05-syrupy-snapshots/&#34;&gt;&lt;code&gt;05-syrupy-snapshots.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Snapshot tests (&lt;code&gt;syrupy&lt;/code&gt;) pour &lt;code&gt;pretty_print_results&lt;/code&gt; et &lt;code&gt;results_to_json&lt;/code&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;06&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://mojo-molotov.github.io/from-ocarina-to-igor/fr/04-internal-tests/06-hypothesis-properties/&#34;&gt;&lt;code&gt;06-hypothesis-properties.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Property-based testing pour les invariants.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;07&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://mojo-molotov.github.io/from-ocarina-to-igor/fr/04-internal-tests/07-coverage-policy/&#34;&gt;&lt;code&gt;07-coverage-policy.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Politique de couverture : ce qui est testé, ce qui ne l&amp;rsquo;est PAS, pourquoi.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;08&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://mojo-molotov.github.io/from-ocarina-to-igor/fr/04-internal-tests/08-allure-history/&#34;&gt;&lt;code&gt;08-allure-history.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Allure + action composite &lt;code&gt;allure-history&lt;/code&gt; + déploiement GH Pages.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;tableau-récapitulatif&#34;&gt;Tableau récapitulatif&lt;a class=&#34;anchor&#34; href=&#34;#tableau-r%c3%a9capitulatif&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Famille&lt;/th&gt;&#xA;          &lt;th&gt;Outil&lt;/th&gt;&#xA;          &lt;th&gt;Quantité&lt;/th&gt;&#xA;          &lt;th&gt;Sujet&lt;/th&gt;&#xA;          &lt;th&gt;Cible&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Scénarios&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;pytest&lt;/code&gt; + &lt;code&gt;allure-pytest&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;~15 fichiers &lt;code&gt;test_*.py&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;DSL, orchestration, acteur Playwright&lt;/td&gt;&#xA;          &lt;td&gt;Couvre le &lt;em&gt;comportement&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Cram&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;prysk&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;15 fichiers &lt;code&gt;.t&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;CLI Selenium + Playwright : parsing, validations, defaults&lt;/td&gt;&#xA;          &lt;td&gt;Couvre la &lt;em&gt;surface utilisateur CLI&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Types statiques&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;pytest-mypy-plugins&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;~5 fichiers &lt;code&gt;*test_types.yml&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Inférences de type, narrowing, erreurs attendues&lt;/td&gt;&#xA;          &lt;td&gt;Couvre le &lt;em&gt;typage&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Snapshots&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;syrupy&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;2 fichiers &lt;code&gt;.ambr&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Sortie de &lt;code&gt;pretty_print_results&lt;/code&gt;, &lt;code&gt;results_to_json&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Couvre le &lt;em&gt;format de sortie&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Property-based&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;hypothesis&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1 fichier (&lt;code&gt;test_invariants_properties.py&lt;/code&gt;)&lt;/td&gt;&#xA;          &lt;td&gt;Comportement sur valeurs aléatoires&lt;/td&gt;&#xA;          &lt;td&gt;Couvre la &lt;em&gt;robustesse aux inputs&lt;/em&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;approche&#34;&gt;Approche&lt;a class=&#34;anchor&#34; href=&#34;#approche&#34; data-pagefind-ignore=&#34;all&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Dans le fichier &lt;code&gt;conftest.py&lt;/code&gt; :&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
