Veröffentlicht am :
Test, Makro INTERNE_ERSTELLUNG

Test des Makros mp_chop

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript beginnt mit der Definition von Makrovariablen für temporäre Dateipfade und die Übereinstimmungszeichenfolge. Anschließend wird eine temporäre Textdatei (`file.txt`) in der WORK-Bibliothek mit vordefiniertem Inhalt erstellt. Das Makro `%mp_chop` wird viermal aufgerufen, wobei jeder Aufruf eine spezifische Parameterkombination testet, um die Eingabedatei zu zerlegen und die Ergebnisse in separate Ausgabedateien zu speichern. Die Makros `%mp_assertscope` werden für die Verwaltung des Testkontexts verwendet. Nach der Ausführung von `%mp_chop` liest das Skript den Inhalt jeder Ausgabedatei in Makrovariablen und verwendet das Makro `%mp_assert` (Teil des SASUnit-Frameworks), um zu überprüfen, ob die Zerlegungsergebnisse den Erwartungen für jedes Testszenario entsprechen.
Datenanalyse

Type : INTERNE_ERSTELLUNG


Die Eingabedaten (`file.txt`) werden vollständig innerhalb des Skripts selbst, in der temporären WORK-Bibliothek, über einen DATA _NULL_-Schritt erstellt und verwaltet. Die von %mp_chop erzeugten Ausgabedateien sind ebenfalls temporär und ihre Inhalte werden intern zur Testüberprüfung gelesen.

1 Codeblock
Definition von Makrovariablen
Erklärung :
Dieser Block initialisiert für das Skript wesentliche Makrovariablen, die den Namen der temporären Eingabedatei, die zu suchende Zeichenfolge und die Namen der vier Ausgabedateien definieren, die die Ergebnisse des Makros %mp_chop enthalten werden.
Kopiert!
1%let src="%sysfunc(pathname(work))/file.txt";
2%let str=Chop here!;
3%let out1="%sysfunc(pathname(work))/file1.txt";
4%let out2="%sysfunc(pathname(work))/file2.txt";
5%let out3="%sysfunc(pathname(work))/file3.txt";
6%let out4="%sysfunc(pathname(work))/file4.txt";
2 Codeblock
DATA STEP Data
Erklärung :
Erstellt eine temporäre Textdatei (`file.txt`) in der WORK-Bibliothek. Diese Datei dient als Eingabedatensatz zum Testen des Makros %mp_chop mit einem einfachen Inhalt zur Überprüfung der Zerlegungsvorgänge.
Kopiert!
1DATA _null_;
2 file &src;
3 put "startsection&str.endsection";
4RUN;
3 Codeblock
Makroaufruf Data
Erklärung :
Dieser Block führt das Makro %mp_chop viermal aus und testet verschiedene Parameterkombinationen (Beibehaltung des 'FIRST'- oder 'LAST'-Teils und Übereinstimmungspunkt 'START' oder 'END'). Jeder Aufruf schreibt das Ergebnis in eine separate temporäre Datei. `%mp_assertscope` wird verwendet, um die Testumgebung zu verwalten, wahrscheinlich um den Zustand der Makrovariablen zu speichern und wiederherzustellen.
Kopiert!
1%mp_assertscope(SNAPSHOT)
2%mp_chop(&src, matchvar=str, keep=FIRST, outfile=&out1)
3%mp_chop(&src, matchvar=str, keep=LAST, outfile=&out2)
4%mp_chop(&src, matchvar=str, keep=FIRST, matchpoint=END, outfile=&out3)
5%mp_chop(&src, matchvar=str, keep=LAST, matchpoint=END, outfile=&out4)
6%mp_assertscope(COMPARE)
4 Codeblock
DATA STEP
Erklärung :
Diese Reihe von DATA _NULL_-Schritten liest den Inhalt jeder der vier von %mp_chop generierten Ausgabedateien und speichert die erste Zeile jeder Datei in dedizierten Makrovariablen (`test1` bis `test4`). Diese Makrovariablen werden zur Überprüfung der Ergebnisse verwendet.
Kopiert!
1DATA _null_;
2 INFILE &out1 lrecl=200;
3 INPUT;
4 call symputx('test1',_infile_);
5DATA _null_;
6 INFILE &out2 lrecl=200;
7 INPUT;
8 call symputx('test2',_infile_);
9DATA _null_;
10 INFILE &out3 lrecl=200;
11 INPUT;
12 call symputx('test3',_infile_);
13DATA _null_;
14 INFILE &out4 lrecl=200;
15 INPUT;
16 call symputx('test4',_infile_);
17RUN;
5 Codeblock
Makroaufruf
Erklärung :
Dieser Block verwendet das Makro `%mp_assert`, um vier separate Behauptungen durchzuführen. Jede Behauptung überprüft, ob der Inhalt einer Makrovariable (aus den Ausgabedateien von %mp_chop) der erwarteten Zeichenfolge entspricht. Die Beschreibungen (`desc`) und der Ausgabedatensatz für die Testergebnisse (`outds=work.test_results`) werden für jede Behauptung angegeben, um die verschiedenen Testszenarien zu dokumentieren.
Kopiert!
1%mp_assert(
2 iftrue=("&test1" = "startsection"),
3 desc=Checking keep FIRST matchpoint START
4 outds=work.test_results
5)
6%mp_assert(
7 iftrue=("&test2" = "Chop here!endsection"),
8 desc=Checking keep LAST matchpoint START
9 outds=work.test_results
10)
11%mp_assert(
12 iftrue=("&test3" = "startsectionChop here!"),
13 desc=Checking keep FIRST matchpoint END
14 outds=work.test_results
15)
16%mp_assert(
17 iftrue=("&test4" = "endsection"),
18 desc=Checking keep LAST matchpoint END
19 outds=work.test_results
20)
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 : Das Skript referenziert und verwendet Makros des SASUnit-Frameworks. Das Copyright von SASUnit lautet: 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.