Publié le :
Macro CREATION_INTERNE

Test de la macro SASUnit assertMustFail

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script utilise le framework de test unitaire SASUnit pour valider le comportement de la macro `%assertMustFail`. Il définit un scénario de test (`%initScenario`) qui contient trois cas de test distincts (`%initTestcase`). Chaque cas de test prépare des données d'entrée (`work.tst`) et des données attendues (`work.expected`), puis appelle la macro `%assertMustFail` dans un contexte contrôlé. Le résultat de l'exécution est ensuite validé à l'aide des macros `%assertLog` (pour vérifier l'absence d'erreurs inattendues dans le journal) et `%assertColumns` (pour comparer la table de résultats `work.tst` à la table attendue `work.expected`). Les trois cas de test simulent respectivement une assertion qui échoue, une assertion manuelle, et une assertion qui réussit, afin de s'assurer que `%assertMustFail` réagit correctement et comme attendu dans chaque situation.
Analyse des données

Type : CREATION_INTERNE


Toutes les données de test (`work.cas`, `work.scn`, `work.tst`, `work.expected`) sont générées et manipulées directement dans le script à l'aide d'étapes DATA. Aucune donnée externe n'est lue ou requise.

1 Bloc de code
DATA STEP Data
Explication :
Initialise le scénario de test avec la macro `%initScenario`. Crée les tables `work.cas` et `work.scn` qui contiennent les identifiants du scénario et du cas de test, servant de contexte pour le framework SASUnit.
Copié !
1/**
2 \file
3 \ingroup SASUNIT_UTIL
4 
5 \brief Test of macro assertMustFail
6 
7 \version \$Revision$
8 \author \$Author$
9 \date \$Date$
10 \sa \$HeadURL$
11 \copyright Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de
12 This file is part of SASUnit, the Unit testing framework for SAS(R) programs.
13 For copyright information and terms of usage under the GNU Lesser General Public License see included file README.md
14 or https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.
15 
16*/ /** \cond */
17 
18%initScenario(i_desc =Test of macro assertMustFail);
19 
20DATA work.cas;
21 cas_scnid=&g_scnid.;
22 cas_id=4;
23 OUTPUT;
24RUN;
25DATA work.scn;
26 scn_scnid=&g_scnid.;
27 OUTPUT;
28RUN;
2 Bloc de code
Macro Data
Explication :
Cas de test 1 : Simule un appel avec une assertion qui échoue. Il prépare un état initial (`tst_res=2`) et un état final attendu (`tst_res=0`). Le test vérifie ensuite que l'exécution de `%assertMustFail` produit le résultat escompté et qu'aucune erreur n'est générée dans le journal.
Copié !
1%*** Testcase 1 ***;
2DATA work.tst;
3 tst_scnid=&g_scnid.;
4 tst_casid=4;
5 tst_id=4;
6 tst_res=2;
7 OUTPUT;
8RUN;
9DATA work.expected;
10 SET work.tst;
11 tst_res=0;
12RUN;
13%initTestcase(i_object=assertMustFail.sas, i_desc=call with failed assert);
14 
15/*-- switch to example database -----------------------*/
16%_switch();
17%assertMustFail;
18/*-- switch to real database -----------------------*/
19%_switch();
20 
21%endTestcall;
22 
23%assertLog(i_errors=0,i_warnings=0);
24%assertColumns(i_expected=work.expected, i_actual=work.tst);
25%endTestcase();
3 Bloc de code
Macro Data
Explication :
Cas de test 2 : Simule un appel avec une assertion manuelle. L'état initial est `tst_res=1` et le résultat attendu est `tst_res=2`. Ce test valide le comportement de `%assertMustFail` dans cette configuration spécifique.
Copié !
1%*** Testcase 2 ***;
2DATA work.tst;
3 tst_scnid=&g_scnid.;
4 tst_casid=4;
5 tst_id=4;
6 tst_res=1;
7 OUTPUT;
8RUN;
9DATA work.expected;
10 SET work.tst;
11 tst_res=2;
12RUN;
13%initTestcase(i_object=assertMustFail.sas, i_desc=call with manual assert);
14 
15/*-- switch to example database -----------------------*/
16%_switch();
17%assertMustFail;
18/*-- switch to real database -----------------------*/
19%_switch();
20 
21%endTestcall;
22 
23%assertLog(i_errors=0,i_warnings=0);
24%assertColumns(i_expected=work.expected, i_actual=work.tst);
25%endTestcase();
4 Bloc de code
Macro Data
Explication :
Cas de test 3 : Simule un appel avec une assertion qui réussit (green assert). `%assertMustFail` s'attend à un échec ; un succès devrait donc être traité comme une anomalie par le framework de test. L'état initial est `tst_res=0` et l'attendu est `tst_res=2`.
Copié !
1%*** Testcase 3 ***;
2DATA work.tst;
3 tst_scnid=&g_scnid.;
4 tst_casid=4;
5 tst_id=4;
6 tst_res=0;
7 OUTPUT;
8RUN;
9DATA work.expected;
10 SET work.tst;
11 tst_res=2;
12RUN;
13%initTestcase(i_object=assertMustFail.sas, i_desc=call with green assert);
14 
15/*-- switch to example database -----------------------*/
16%_switch();
17%assertMustFail;
18/*-- switch to real database -----------------------*/
19%_switch();
20 
21%endTestcall;
22 
23%assertLog(i_errors=0,i_warnings=0);
24%assertColumns(i_expected=work.expected, i_actual=work.tst);
25%endTestcase();
5 Bloc de code
Macro
Explication :
Termine et nettoie le scénario de test SASUnit, finalisant l'ensemble des vérifications.
Copié !
1%endScenario();
2/** \endcond */
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de. This file is part of SASUnit, the Unit testing framework for SAS(R) programs.