Veröffentlicht am :
Unitätstest CREATION_INTERNE

Test des ms_triggerstp Makros

Dieser Code ist auch verfügbar auf: English Français
Wartet auf Validierung
Dieses Skript erstellt dynamisch zwei temporäre SAS©-Dateien, die als gespeicherte Prozesse (STP) fungieren und in `_webout` schreiben. Anschließend wird das Makro `ms_triggerstp` verwendet, um diese STPs auszulösen und die Ausführungsergebnisse in einer Arbeitstabelle (`work.mySessions`) zu erfassen. Das Skript führt eine Reihe von Assertions (über `mp_assert`, `mp_assertdsobs`, `mp_assertcols`) durch, um die Existenz der Ergebnisse, die Anzahl der Beobachtungen, die Spaltenstruktur und die Konsistenz der zurückgegebenen Daten zu überprüfen. Schließlich wird die Umgebung durch Löschen der erstellten Dateien bereinigt.
Datenanalyse

Type : CREATION_INTERNE


Der Code der gespeicherten Prozesse wird im Skript (Data Step _NULL_) ad-hoc generiert. Die analysierten Daten sind die Ergebnisse der Ausführung dieser Prozesse.

1 Codeblock
DATA STEP
Erklärung :
Generierung zweier temporärer Dateien, die den SAS-Quellcode der für den Test simulierten gespeicherten Prozesse (STP) enthalten.
Kopiert!
1filename stpcode1 temp;
2DATA _null_;
3 file stpcode1;
4 put '%put hello world;';
5 put '%put _all_;';
6 put 'data _null_; file _webout1; put "triggerstp test 1";run;';
7RUN;
8filename stpcode2 temp;
9/* ... creation stpcode2 ... */
2 Codeblock
Macro Call
Erklärung :
Erzeugung eindeutiger Dateinamen und physische Erstellung der Test-.sas-Dateien im Verzeichnis `/sasjs/tests/` aus dem zuvor generierten Code.
Kopiert!
1%let fname1=%mf_getuniquename();
2%let fname2=%mf_getuniquename();
3 
4%ms_createfile(/sasjs/tests/&fname1..sas
5 ,inref=stpcode1
6 ,mdebug=1
7)
8%ms_createfile(/sasjs/tests/&fname2..sas
9 ,inref=stpcode2
10)
3 Codeblock
Macro Call Data
Erklärung :
Ausführung der gespeicherten Prozesse mittels `ms_triggerstp`. Die Ergebnisse werden in `work.mySessions` konsolidiert. `mp_assertscope` überwacht die Verschmutzung der Makro-/Global-Umgebung.
Kopiert!
1%mp_assertscope(SNAPSHOT)
2 %ms_triggerstp(/sasjs/tests/&fname1
3 ,debug=131
4 ,outds=work.mySessions
5 )
6 %ms_triggerstp(/sasjs/tests/&fname2
7 ,outds=work.mySessions
8 )
9%mp_assertscope(COMPARE...)
4 Codeblock
Macro Call
Erklärung :
Ergebnisvalidierung: Überprüfung, ob die Ausgabetabelle existiert, genau 2 Beobachtungen enthält und die Spalte `sessionid` besitzt.
Kopiert!
1%mp_assert(iftrue=%str(%mf_existds(work.mySessions)=1)...)
2%mp_assertdsobs(work.mySessions, test=EQUALS 2...)
3%mp_assertcols(work.mySessions, cols=sessionid...)
5 Codeblock
DATA STEP
Erklärung :
Analyse des Inhalts der Ergebnistabelle, um sicherzustellen, dass `sessionID` nicht fehlt, mit Speicherung des Ergebnisses in einer Makro-Variablen für die finale Assertion.
Kopiert!
1DATA _null_;
2 retain contentCheck 1;
3 SET work.mySessions END=last;
4 IF missing(sessionID) THEN contentCheck = 0;
5 IF last THEN DO;
6 call symputx("contentCheck",contentCheck,"l");
7 END;
8RUN;
6 Codeblock
Macro Call
Erklärung :
Löschen der für den Test erstellten temporären SAS-Dateien, um das System sauber zu hinterlassen.
Kopiert!
1%ms_deletefile(/sasjs/tests/&fname1..sas)
2%ms_deletefile(/sasjs/tests/&fname2..sas)
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.