Veröffentlicht am :
Test INTERNE_ERSTELLUNG

Webservice-Test mit mx_testservice

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Das Skript initialisiert die Umgebung für Webservice-Tests und weist auf die Notwendigkeit hin, `mcTestAppLoc` für SAS© Studio zu definieren. Es konfiguriert die Ausgabe eines Webservices mithilfe eines `parmcards4`-Blocks und der `%webout`-Makros, einschließlich eines Makros `x` zur Verwaltung der Integration von SAS©-Tabellen oder Eingabedateien in die Webausgabe. Das Makro `%mx_createwebservice` wird aufgerufen, um einen Webservice `sendObj` am Speicherort `/services` unter `&mcTestAppLoc` bereitzustellen. Eine anfängliche Assertion über `%mp_assert` überprüft, ob die Diensterstellung fehlerfrei verlaufen ist. Anschließend werden zwei temporäre Datensätze (`work.somedata1`, `work.somedata2`) mit spezifischen Werten als Eingabedaten erstellt. Das Makro `%mx_testservice` wird verwendet, um den Service `sendObj` mit diesen Datensätzen aufzurufen, indem Debugging-Optionen aktiviert und die Ergebnisse in die Bibliothek `testlib1` geleitet werden. Schließlich überprüfen zwei `DATA STEP` vom Typ `_NULL_` den Inhalt der resultierenden Datensätze in `testlib1` (`somedata1`, `somedata2`), um sicherzustellen, dass die Daten korrekt verarbeitet wurden. Die Makrovariablen `test1` und `test2` werden entsprechend aktualisiert. Abschließende `%mp_assert`-Assertions protokollieren die Erfolge oder Misserfolge dieser Überprüfungen.
Datenanalyse

Type : INTERNE_ERSTELLUNG


Die Datensätze `work.somedata1` und `work.somedata2` werden direkt im Skript über einen `DATA STEP` zu Testzwecken erstellt. Es werden keine externen Daten, die nicht vom Skript verwaltet werden, direkt für die Tests verwendet.

1 Codeblock
Webout-Makros und Makrodefinition
Erklärung :
Dieser Block verwendet `parmcards4`, um eine Reihe von Befehlen zu übermitteln, die die Ausgabe eines Webservices konfigurieren. Die `%webout`-Makros verwalten das Abrufen (`FETCH`), Öffnen (`OPEN`), Erstellen von Objekten (`OBJ`) und Schließen (`CLOSE`) der Webausgabe. Ein internes Makro `x` ist definiert, um SAS-Tabellen oder Eingabedateien (`_webin_file_count`) zu durchlaufen und sie als Objekte in die Webausgabe aufzunehmen, wodurch die Datenstruktur vorbereitet wird, die vom Dienst ausgetauscht wird.
Kopiert!
1filename ft15f001 temp;
2parmcards4;
3 %put Initialising sendObj: ;
4 %put _all_;
5 %webout(FETCH)
6 %webout(OPEN)
7 %macro x();
8 %IF %symexist(sasjs_tables) %THEN %DO i=1 %to %sysfunc(countw(&sasjs_tables));
9 %let TABLE=%scan(&sasjs_tables,&i);
10 %webout(OBJ,&TABLE,missing=STRING)
11 %END;
12 %ELSE %DO i=1 %to &_webin_file_count;
13 %webout(OBJ,&&_webin_name&i,missing=STRING)
14 %END;
15 %mend x; %x()
16 %webout(CLOSE)
17;;;;
2 Codeblock
Makro mx_createwebservice
Erklärung :
Dieser Block ruft das Makro `%mx_createwebservice` auf, um einen Webservice namens `sendObj` am durch `&mcTestAppLoc/services` definierten Speicherort zu erstellen oder bereitzustellen. Unmittelbar danach wird das Makro `%mp_assert` verwendet, um zu überprüfen, ob diese Erstellung fehlerfrei verlaufen ist (Systemrückkehrcode `&syscc=0`), wobei das Ergebnis in `work.test_results` gespeichert wird. Dies ist ein wesentlicher Konfigurations- und Überprüfungsschritt des Dienstes.
Kopiert!
1%mx_createwebservice(path=&mcTestAppLoc/services,name=sendObj)
2 
3%mp_assert(
4 iftrue=(&syscc=0),
5 desc=No errors after service creation,
6 outds=work.test_results
7)
3 Codeblock
DATA STEP Data
Erklärung :
Dieser `DATA STEP` erstellt zwei temporäre Datensätze, `work.somedata1` und `work.somedata2`. Jeder enthält eine einzige Beobachtung mit den Variablen `x` (numerisch), `y` (Zeichenkette mit Leerzeichen und escaped Anführungszeichen) und `z` (fehlender numerischer Wert). Die Variable `x` erhält das Label 'x factor'. Diese Datensätze dienen als Eingabedaten für den Webservice-Test.
Kopiert!
1DATA work.somedata1 work.somedata2;
2 x=1;
3 y=' t"w"o';
4 z=.z;
5 label x='x factor';
6 OUTPUT;
7RUN;
4 Codeblock
Makro mx_testservice
Erklärung :
Dieser Block führt das Makro `%mx_testservice` aus, um den Webservice `sendObj` zu testen. Die Datensätze `work.somedata1` und `work.somedata2` werden als Eingaben an den Dienst übergeben. Die Optionen `debug=log` und `mdebug=1` aktivieren ein detailliertes Debugging im SAS-Protokoll. Die vom Dienst verarbeiteten Ergebnisse werden in der Bibliothek `testlib1` gespeichert.
Kopiert!
1%mx_testservice(&mcTestAppLoc/services/sendObj,
2 inputdatasets=work.somedata1 work.somedata2,
3 debug=log,
4 mdebug=1,
5 outlib=testlib1,
6 outref=test1
7)
5 Codeblock
DATA STEP (Überprüfung)
Erklärung :
Dieser `DATA STEP` vom Typ `_NULL_` ist ein Überprüfungsschritt. Er liest den Datensatz `testlib1.somedata1`, der das Ergebnis der Webservice-Verarbeitung ist. Die Makrovariable `test1` wird auf `FAIL` initialisiert. Wenn die Werte der Variablen `x`, `y` und `z` den Erwartungen entsprechen (mit `z="Z"` für einen fehlenden Wert), wird `test1` auf `PASS` gesetzt. `putlog (_all_)(=)` zeigt den Inhalt der Beobachtung im Protokoll an, um die Überprüfung zu erleichtern.
Kopiert!
1%let test1=FAIL;
2DATA _null_;
3 SET testlib1.somedata1;
4 IF x=1 and y=' t"w"o' and z="Z" THEN call symputx('test1','PASS');
5 putlog (_all_)(=);
6RUN;
6 Codeblock
DATA STEP (Überprüfung)
Erklärung :
Ähnlich wie im vorherigen Block überprüft dieser `DATA STEP` den Inhalt des Datensatzes `testlib1.somedata2` nach der Verarbeitung durch den Webservice. Die Makrovariable `test2` wird auf `PASS` aktualisiert, wenn die Werte der Variablen `x`, `y` und `z` den Erwartungen entsprechen, wodurch bestätigt wird, dass der Dienst diesen Datensatz korrekt verarbeitet hat.
Kopiert!
1%let test2=FAIL;
2DATA _null_;
3 SET testlib1.somedata2;
4 IF x=1 and y=' t"w"o' and z="Z" THEN call symputx('test2','PASS');
5 putlog (_all_)(=);
6RUN;
7 Codeblock
Makros mp_assert
Erklärung :
Diese beiden abschließenden Aufrufe des Makros `%mp_assert` werden verwendet, um die globalen Testergebnisse zu validieren. Der erste überprüft, ob `test1` `PASS` ist, was die korrekte Verarbeitung von `somedata1` bestätigt. Der zweite macht dasselbe für `test2` und `somedata2`. Die Ergebnisse dieser Assertions werden im Datensatz `work.test_results` gespeichert, wodurch der Testbericht zentralisiert wird.
Kopiert!
1%mp_assert(
2 iftrue=(&test1=PASS),
3 desc=somedata1 created correctly,
4 outds=work.test_results
5)
6%mp_assert(
7 iftrue=(&test2=PASS),
8 desc=somedata2 created correctly,
9 outds=work.test_results
10)
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.