Veröffentlicht am :
Makro CREATION_INTERNE

Test der SASUnit Makro assertMustFail

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript verwendet das SASUnit Unit-Test-Framework, um das Verhalten des Makros `%assertMustFail` zu überprüfen. Es definiert ein Testszenario (`%initScenario`), das drei separate Testfälle (`%initTestcase`) enthält. Jeder Testfall bereitet Eingabedaten (`work.tst`) und erwartete Daten (`work.expected`) vor und ruft dann das Makro `%assertMustFail` in einem kontrollierten Kontext auf. Das Ausführungsergebnis wird anschließend mit den Makros `%assertLog` (um das Fehlen unerwarteter Fehler im Protokoll zu überprüfen) und `%assertColumns` (um die Ergebnistabelle `work.tst` mit der erwarteten Tabelle `work.expected` zu vergleichen) validiert. Die drei Testfälle simulieren jeweils eine fehlschlagende Assertion, eine manuelle Assertion und eine erfolgreiche Assertion, um sicherzustellen, dass `%assertMustFail` in jeder Situation korrekt und wie erwartet reagiert.
Datenanalyse

Type : CREATION_INTERNE


Alle Testdaten (`work.cas`, `work.scn`, `work.tst`, `work.expected`) werden direkt im Skript mit DATA-Schritten generiert und manipuliert. Es werden keine externen Daten gelesen oder benötigt.

1 Codeblock
DATA STEP Data
Erklärung :
Initialisiert das Testszenario mit dem Makro `%initScenario`. Erstellt die Tabellen `work.cas` und `work.scn`, die die Szenario- und Testfall-IDs enthalten und als Kontext für das SASUnit-Framework dienen.
Kopiert!
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 Codeblock
Macro Data
Erklärung :
Testfall 1: Simuliert einen Aufruf mit einer fehlschlagenden Assertion. Es bereitet einen Anfangszustand (`tst_res=2`) und einen erwarteten Endzustand (`tst_res=0`) vor. Der Test überprüft anschließend, ob die Ausführung von `%assertMustFail` das erwartete Ergebnis liefert und ob keine Fehler im Protokoll generiert werden.
Kopiert!
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 Codeblock
Macro Data
Erklärung :
Testfall 2: Simuliert einen Aufruf mit einer manuellen Assertion. Der Anfangszustand ist `tst_res=1` und das erwartete Ergebnis ist `tst_res=2`. Dieser Test validiert das Verhalten von `%assertMustFail` in dieser spezifischen Konfiguration.
Kopiert!
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 Codeblock
Macro Data
Erklärung :
Testfall 3: Simuliert einen Aufruf mit einer erfolgreichen Assertion (green assert). `%assertMustFail` erwartet einen Fehler; ein Erfolg sollte daher vom Testframework als Anomalie behandelt werden. Der Anfangszustand ist `tst_res=0` und der erwartete Zustand ist `tst_res=2`.
Kopiert!
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 Codeblock
Macro
Erklärung :
Beendet und bereinigt das SASUnit Testszenario und schließt alle Überprüfungen ab.
Kopiert!
1%endScenario();
2/** \endcond */
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : 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.