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!
/**
\file
\ingroup SASUNIT_UTIL
\brief Test of macro assertMustFail
\version \$Revision$
\author \$Author$
\date \$Date$
\sa \$HeadURL$
\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.
For copyright information and terms of usage under the GNU Lesser General Public License see included file README.md
or https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.
*/ /** \cond */
%initScenario(i_desc =Test of macro assertMustFail);
data work.cas;
cas_scnid=&g_scnid.;
cas_id=4;
output;
run;
data work.scn;
scn_scnid=&g_scnid.;
output;
run;
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
20
DATA work.cas;
21
cas_scnid=&g_scnid.;
22
cas_id=4;
23
OUTPUT;
24
RUN;
25
DATA work.scn;
26
scn_scnid=&g_scnid.;
27
OUTPUT;
28
RUN;
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!
%*** Testcase 1 ***;
data work.tst;
tst_scnid=&g_scnid.;
tst_casid=4;
tst_id=4;
tst_res=2;
output;
run;
data work.expected;
set work.tst;
tst_res=0;
run;
%initTestcase(i_object=assertMustFail.sas, i_desc=call with failed assert);
/*-- switch to example database -----------------------*/
%_switch();
%assertMustFail;
/*-- switch to real database -----------------------*/
%_switch();
%endTestcall;
%assertLog(i_errors=0,i_warnings=0);
%assertColumns(i_expected=work.expected, i_actual=work.tst);
%endTestcase();
1
%*** Testcase 1 ***;
2
DATA work.tst;
3
tst_scnid=&g_scnid.;
4
tst_casid=4;
5
tst_id=4;
6
tst_res=2;
7
OUTPUT;
8
RUN;
9
DATA work.expected;
10
SET work.tst;
11
tst_res=0;
12
RUN;
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 -----------------------*/
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!
%*** Testcase 2 ***;
data work.tst;
tst_scnid=&g_scnid.;
tst_casid=4;
tst_id=4;
tst_res=1;
output;
run;
data work.expected;
set work.tst;
tst_res=2;
run;
%initTestcase(i_object=assertMustFail.sas, i_desc=call with manual assert);
/*-- switch to example database -----------------------*/
%_switch();
%assertMustFail;
/*-- switch to real database -----------------------*/
%_switch();
%endTestcall;
%assertLog(i_errors=0,i_warnings=0);
%assertColumns(i_expected=work.expected, i_actual=work.tst);
%endTestcase();
1
%*** Testcase 2 ***;
2
DATA work.tst;
3
tst_scnid=&g_scnid.;
4
tst_casid=4;
5
tst_id=4;
6
tst_res=1;
7
OUTPUT;
8
RUN;
9
DATA work.expected;
10
SET work.tst;
11
tst_res=2;
12
RUN;
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 -----------------------*/
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!
%*** Testcase 3 ***;
data work.tst;
tst_scnid=&g_scnid.;
tst_casid=4;
tst_id=4;
tst_res=0;
output;
run;
data work.expected;
set work.tst;
tst_res=2;
run;
%initTestcase(i_object=assertMustFail.sas, i_desc=call with green assert);
/*-- switch to example database -----------------------*/
%_switch();
%assertMustFail;
/*-- switch to real database -----------------------*/
%_switch();
%endTestcall;
%assertLog(i_errors=0,i_warnings=0);
%assertColumns(i_expected=work.expected, i_actual=work.tst);
%endTestcase();
1
%*** Testcase 3 ***;
2
DATA work.tst;
3
tst_scnid=&g_scnid.;
4
tst_casid=4;
5
tst_id=4;
6
tst_res=0;
7
OUTPUT;
8
RUN;
9
DATA work.expected;
10
SET work.tst;
11
tst_res=2;
12
RUN;
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 -----------------------*/
Erklärung : Beendet und bereinigt das SASUnit Testszenario und schließt alle Überprüfungen ab.
Kopiert!
%endScenario();
/** \endcond */
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.