{"id":162,"date":"2026-08-04T20:56:37","date_gmt":"2026-08-04T20:56:37","guid":{"rendered":"https:\/\/professeurcot.net\/blog\/?p=162"},"modified":"2026-08-04T20:56:38","modified_gmt":"2026-08-04T20:56:38","slug":"les-tests-unitaires-avec-python","status":"publish","type":"post","link":"https:\/\/professeurcot.net\/blog\/2026\/08\/04\/les-tests-unitaires-avec-python\/","title":{"rendered":"Les tests unitaires avec Python"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En programmation, il existe diff\u00e9rents types de test.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"571\" src=\"https:\/\/professeurcot.net\/blog\/wp-content\/uploads\/2026\/08\/tests-1024x571.png\" alt=\"Types de test\" class=\"wp-image-163\" srcset=\"https:\/\/professeurcot.net\/blog\/wp-content\/uploads\/2026\/08\/tests-1024x571.png 1024w, https:\/\/professeurcot.net\/blog\/wp-content\/uploads\/2026\/08\/tests-300x167.png 300w, https:\/\/professeurcot.net\/blog\/wp-content\/uploads\/2026\/08\/tests-768x428.png 768w, https:\/\/professeurcot.net\/blog\/wp-content\/uploads\/2026\/08\/tests-1536x857.png 1536w, https:\/\/professeurcot.net\/blog\/wp-content\/uploads\/2026\/08\/tests.png 1802w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Il existe aussi diff\u00e9rentes techniques:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Le test de la bo\u00eete blanche<\/strong>: le testeur conna\u00eet la fonctionnalit\u00e9 interne. Le processus de travail comprend l\u2019entr\u00e9e, le traitement, la planification ad\u00e9quate des tests et la sortie ou le rapport final.<\/li>\n\n\n\n<li>&nbsp;<strong>Test de la bo\u00eete noire<\/strong>: Ce type de test consiste \u00e0 tester l\u2019interface utilisateur de votre solution logicielle ainsi que les donn\u00e9es d\u2019entr\u00e9e et de sortie. Il v\u00e9rifie le sc\u00e9nario du syst\u00e8me.<\/li>\n\n\n\n<li>&nbsp;<strong>Tests en bo\u00eete grise<\/strong>:&nbsp; Il s\u2019agit d\u2019une combinaison des tests bo\u00eete blanche et bo\u00eete noire.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dans cet article, nous allons voir 2 types de test: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-black-color has-text-color has-link-color wp-elements-8fa5ee34ca64806abcb48efd392ff470\"><strong>Tests unitaires<\/strong>: Ce sont les tests les plus simples. Ils se concentrent sur une petite unit\u00e9 de code. Ces tests ce concentrent sur une fonction ou une m\u00e9thode.<\/li>\n\n\n\n<li><strong>Tests fonctionnels:<\/strong> Ces tests \u00e9valuent une fonctionnalit\u00e9 de votre programme. Ils simulent l\u2019utilisation de votre programme par un utilisateur.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Tests fonctionnels<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les tests fonctionnels sont destin\u00e9s \u00e0 valider que le comportement fonctionnel de l\u2019application est conforme \u00e0 la sp\u00e9cification.&nbsp;Ils simulent les actions de l&rsquo;utilisateur de mani\u00e8re manuel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exemple: On peut v\u00e9rifier qu\u2019un utilisateur puisse s\u2019inscrire, se connecter, changer son mot de passe, etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ces tests se font sans conna\u00eetre la programmation, simplement s\u2019assurer que tout fonctionne selon les sp\u00e9cifications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les \u00e9tapes des tests fonctionnels sont assez simples. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>D\u00e9terminer la fonctionnalit\u00e9 \u00e0 tester.<\/li>\n\n\n\n<li>Pr\u00e9voir des donn\u00e9es pour tester la fonctionnalit\u00e9.<\/li>\n\n\n\n<li>Connaitre les param\u00e8tres attendus en sortie (selon les sp\u00e9cifications).<\/li>\n\n\n\n<li>Ex\u00e9cution du test.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Tests unitaires<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les tests unitaires est sensiblement la m\u00eame chose que d\u2019\u00e9crire votre programme. Vous faite un programme pour r\u00e9soudre le probl\u00e8me de votre client. Les tests unitaires sont un programme pour r\u00e9soudre votre probl\u00e8me. Ils sont souvent automatis\u00e9s. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les tests unitaires, en tant que principe de tester s\u00e9par\u00e9ment des parties plus \u00e9l\u00e9mentaires d&rsquo;un logiciel complexe, remonte aux d\u00e9buts de l&rsquo;ing\u00e9nierie logicielle (<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Test_unitaire\" target=\"_blank\" rel=\"noreferrer noopener\">voir wiki<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019objectif principal des tests unitaires est d\u2019isoler chaque partie du programme afin de pouvoir tester si chaque partie du logiciel fonctionne correctement sans aucune erreur. Ils permettent de v\u00e9rifier le bon fonctionnement d&rsquo;une partie pr\u00e9cise d&rsquo;un logiciel (appel\u00e9e \u00ab unit\u00e9 \u00bb ou \u00ab module \u00bb).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quelques \u00e9tapes pour faire des tests unitaires:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Utiliser une nomenclature claire et coh\u00e9rente pour tous les tests<\/li>\n\n\n\n<li>Faire des tests d\u00e9terministes (donne toujours le m\u00eame r\u00e9sultat)<\/li>\n\n\n\n<li>R\u00e9duire les d\u00e9pendances de tests<\/li>\n\n\n\n<li>Tester un seul cas d\u2019utilisation par test unitaire<\/li>\n\n\n\n<li>Automatiser des tests<\/li>\n\n\n\n<li>Documenter les tests, r\u00e9sultats et probl\u00e8mes<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Les tests sont r\u00e9dig\u00e9s selon les 3 A:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Acteur<\/strong>: Instancier les objets et d\u00e9finir les variables qui sont n\u00e9cessaires au sc\u00e9nario de test<\/li>\n\n\n\n<li><strong>Action<\/strong>: Appeler la m\u00e9thode \u00e0 tester et stocker le r\u00e9sultat<\/li>\n\n\n\n<li><strong>Assertion<\/strong>: Comparer le r\u00e9sultat obtenu au r\u00e9sultat attendu<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En anglais, cela donne: Arrange, Act, Assert. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce pattern des 3 A va nous permettre de bien nommer nos tests. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La partie <strong>Acteur<\/strong> est la phase d&rsquo;initialisation de notre cas de test. On peut nommer notre test en commen\u00e7ant par \u00ab\u00a0<em>DeuxOperandes<\/em>\u00ab\u00a0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La partie <strong>Action<\/strong> est la phase du milieu de notre cas de test. On peut continuer \u00e0 nommer notre cas de test avec \u00ab\u00a0<em>QuandMultiplier<\/em>\u00ab\u00a0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La partie <strong>Assertion<\/strong> est la derni\u00e8re phase de notre cas de test. On peut terminer le nom de notre cas de test par \u00ab\u00a0<em>AlorsResultatMultiplication<\/em>\u00ab\u00a0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce qui donne le nom de notre cas de test \u00ab\u00a0<em><strong>DeuxOperandes_QuandMultiplier_AlorsResultatMultiplication<\/strong><\/em>\u00ab\u00a0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici quelques exemples d&rsquo;utilisation<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Tests unitaires avec Python\" width=\"1140\" height=\"641\" src=\"https:\/\/www.youtube.com\/embed\/sMOAwnYJPVs?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Martin<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<div class=\"pld-like-dislike-wrap pld-template-1\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"\" data-post-id=\"162\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                        <i class=\"fas fa-thumbs-up\"><\/i>\r\n                <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">    <\/span>\r\n<\/div><div class=\"pld-dislike-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-dislike-trigger pld-like-dislike-trigger  \" title=\"\" data-post-id=\"162\" data-trigger-type=\"dislike\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                        <i class=\"fas fa-thumbs-down\"><\/i>\r\n                <\/a>\r\n    <span class=\"pld-dislike-count-wrap pld-count-wrap\"><\/span>\r\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>En programmation, il existe diff\u00e9rents types de test. Il existe aussi diff\u00e9rentes techniques: Dans cet article, nous allons voir 2&hellip;<\/p>\n","protected":false},"author":2,"featured_media":169,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","rolpb_likes":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_share_on_mastodon":"0"},"categories":[5],"tags":[6,7],"class_list":["post-162","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-tests","tag-unitaires"],"share_on_mastodon":{"url":"","error":""},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/professeurcot.net\/blog\/wp-content\/uploads\/2026\/08\/Banner.jpg","_links":{"self":[{"href":"https:\/\/professeurcot.net\/blog\/wp-json\/wp\/v2\/posts\/162","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/professeurcot.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/professeurcot.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/professeurcot.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/professeurcot.net\/blog\/wp-json\/wp\/v2\/comments?post=162"}],"version-history":[{"count":5,"href":"https:\/\/professeurcot.net\/blog\/wp-json\/wp\/v2\/posts\/162\/revisions"}],"predecessor-version":[{"id":171,"href":"https:\/\/professeurcot.net\/blog\/wp-json\/wp\/v2\/posts\/162\/revisions\/171"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/professeurcot.net\/blog\/wp-json\/wp\/v2\/media\/169"}],"wp:attachment":[{"href":"https:\/\/professeurcot.net\/blog\/wp-json\/wp\/v2\/media?parent=162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/professeurcot.net\/blog\/wp-json\/wp\/v2\/categories?post=162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/professeurcot.net\/blog\/wp-json\/wp\/v2\/tags?post=162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}