Veröffentlicht am :
Test SASHELP

Unitärtest für das Makro mf_getvarlist

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript führt eine Reihe von Unit-Tests für das Makro `mf_getvarlist` durch. Es ruft das Makro mehrmals mit verschiedenen Konfigurationen auf: ohne Option (Standardlisten), mit einem benutzerdefinierten Trennzeichen ('X'), mit einem Trennzeichen und doppelten Anführungszeichen sowie mit Filtern für numerische oder Zeichenvariablen. Die Ergebnisse jedes Makroaufrufs werden in Makrovariablen gespeichert. Anschließend wird ein DATA-Schritt verwendet, um die erhaltenen Ergebnisse mit erwarteten Werten zu vergleichen, und speichert den Status jedes Tests (PASS/FAIL) sowie erläuternde Kommentare in einer SAS©-Tabelle namens `work.test_results`.
Datenanalyse

Type : SASHELP


Das Skript verwendet die Tabelle `sashelp.class`, eine Standard-Beispieltabelle, die mit SAS geliefert wird, als Datenquelle für das Makro `mf_getvarlist`. Es sind keine externen Daten erforderlich, und alle Testdaten werden generiert oder stammen aus SASHELP. Die Testergebnisse werden anschließend in der internen Tabelle `work.test_results` gespeichert.

1 Codeblock
Makroaufrufe
Erklärung :
Dieser Codeblock führt mehrere Aufrufe des Makros `%mf_getvarlist` aus. Jeder Aufruf verwendet die Tabelle `sashelp.class` als Eingabe und variiert die Optionen für das Trennzeichen (`dlm`) und die Filterung nach Variablentyp (`typefilter`). Die Ergebnisse (Listen von Variablennamen) werden in Makrovariablen (`test1` bis `test5`) zur späteren Auswertung gespeichert.
Kopiert!
1%let test1=%mf_getvarlist(sashelp.class);
2%let test2=%mf_getvarlist(sashelp.class,dlm=X);
3%let test3=%mf_getvarlist(sashelp.class,dlm=%str(,),quote=double);
4%let test4=%mf_getvarlist(sashelp.class,typefilter=N);
5%let test5=%mf_getvarlist(sashelp.class,typefilter=C);
2 Codeblock
DATA STEP Data
Erklärung :
Dieser `DATA STEP`-Block erstellt die Tabelle `work.test_results`, um die Testergebnisse zu protokollieren. Für jeden Testfall ruft er den Wert der entsprechenden Makrovariablen (die die vom `%mf_getvarlist`-Makro extrahierte Variablenliste enthält) über `symget()` ab. Anschließend vergleicht er diesen Wert mit einer vordefinierten Zeichenkette `result`, die das erwartete Ergebnis darstellt. Je nach diesem Vergleich wird ein Status 'PASS' oder 'FAIL' zugewiesen und detaillierte Kommentare aufgezeichnet. Die temporären Variablen `base` und `result` werden anschließend gelöscht.
Kopiert!
1DATA work.test_results;
2 LENGTH test_description $256 test_result $4 test_comments base RESULT $256;
3 test_description="Basic test";
4 base=symget('test1');
5 RESULT='Name Sex Age Height Weight';
6 IF base=RESULT THEN test_result='PASS';
7 ELSE test_result='FAIL';
8 test_comments="Comparing "!!trim(base)!!' vs '!!trim(RESULT);
9 OUTPUT;
10 
11 test_description="DLM test";
12 base=symget('test2');
13 RESULT='NameXSexXAgeXHeightXWeight';
14 IF base=RESULT THEN test_result='PASS';
15 ELSE test_result='FAIL';
16 test_comments="Comparing "!!trim(base)!!' vs '!!trim(RESULT);
17 OUTPUT;
18 
19 test_description="DLM + quote test";
20 base=symget('test3');
21 RESULT='"Name","Sex","Age","Height","Weight"';
22 IF base=RESULT THEN test_result='PASS';
23 ELSE test_result='FAIL';
24 test_comments="Comparing "!!trim(base)!!' vs '!!trim(RESULT);
25 OUTPUT;
26 
27 test_description="Numeric Filter";
28 base=symget('test4');
29 RESULT='Age Height Weight';
30 IF base=RESULT THEN test_result='PASS';
31 ELSE test_result='FAIL';
32 test_comments="Comparing "!!trim(base)!!' vs '!!trim(RESULT);
33 OUTPUT;
34 
35 test_description="Char Filter";
36 base=symget('test5');
37 RESULT='Name Sex';
38 IF base=RESULT THEN test_result='PASS';
39 ELSE test_result='FAIL';
40 test_comments="Comparing "!!trim(base)!!' vs '!!trim(RESULT);
41 OUTPUT;
42 
43 drop base RESULT;
44RUN;
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. Diese Datei ist Teil von SASUnit, dem Unit-Test-Framework für SAS(R)-Programme. Informationen zum Copyright und den Nutzungsbedingungen unter der GNU Lesser General Public License finden Sie in der beigefügten Datei README.md oder unter https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.