Veröffentlicht am :

Unit-Test für das Makro mp_storediffs

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Dieses Programm führt eine Reihe von Unit-Tests durch, um die Robustheit des Makros mp_storediffs zu überprüfen. Es generiert Testdaten, die von sashelp.class abgeleitet sind, wendet kontrollierte Änderungen an und verwendet Assertionsmakros (mp_assert, mp_assertdsobs, mp_assertcolvals), um zu validieren, dass die gemeldeten Unterschiede exakt sind. Die Szenarien umfassen gemischte Änderungen, keine Änderungen und nur Löschungen.
Datenanalyse

Type : MIXTE


Die Daten werden lokal (Bibliothek WORK) aus der Systemtabelle sashelp.class über DATA-Schritte generiert.

1 Codeblock
DATA STEP Data
Erklärung :
Erstellung der Testtabellen für das erste Szenario: eine Originaltabelle und Tabellen, die Löschungen, Änderungen und Hinzufügungen simulieren.
Kopiert!
1DATA work.orig work.deleted work.changed work.appended;
2 SET sashelp.class;
3 IF _n_=1 THEN DO;
4 OUTPUT work.orig work.deleted;
5 END;
6 ELSE IF _n_=2 THEN DO;
7 OUTPUT work.orig;
8 age=99;
9 OUTPUT work.changed;
10 END;
11 ELSE DO;
12 name='Newbie';
13 OUTPUT work.appended;
14 stop;
15 END;
16RUN;
2 Codeblock
MACRO CALL
Erklärung :
Aufruf des Makros mp_storediffs, um sashelp.class mit work.orig zu vergleichen und die Unterschiede in work.final zu generieren.
Kopiert!
1%mp_storediffs(sashelp.class,work.orig,NAME
2 ,delds=work.deleted
3 ,modds=work.changed
4 ,appds=work.appended
5 ,outds=work.final
6 ,mdebug=1
7)
3 Codeblock
MACRO CALL
Erklärung :
Überprüfung auf Systemfehler und Behauptung, dass die Ergebnistabelle genau 15 Beobachtungen enthält.
Kopiert!
1%mp_assert(
2 iftrue=(
3 %str(&syscc)=%str(0)
4 ),
5 desc=ensure no errors,
6 outds=work.test_results
7)
8 
9%mp_assertdsobs(work.final,
10 desc=Has 15 records,
11 test=EQUALS 15,
12 outds=work.test_results
13)
4 Codeblock
DATA STEP Data
Erklärung :
Erstellung einer Referenztabelle zur Validierung, dass die Spalte 'tgtvar_type' der finalen Tabelle über mp_assertcolvals nur die erwarteten Werte enthält.
Kopiert!
1DATA work.check;
2 LENGTH val $10;
3 DO val='C','N';
4 OUTPUT;
5 END;
6RUN;
7%mp_assertcolvals(work.final.tgtvar_type,
8 checkvals=work.check.val,
9 desc=All values have a match,
10 test=ALLVALS
11)
5 Codeblock
DATA STEP Data
Erklärung :
Testszenario 'Keine Änderung': Überprüft, ob der Vergleich identischer Tabellen eine leere Differenztabelle (0 Beobachtungen) erzeugt.
Kopiert!
1/* Test for when there are no actual changes */
2DATA work.orig work.deleted work.changed work.appended;
3 SET sashelp.class;
4 OUTPUT work.orig;
5RUN;
6%mp_storediffs(sashelp.class,work.orig,NAME
7 ,delds=work.deleted
8 ,modds=work.changed
9 ,appds=work.appended
10 ,outds=work.final2
11 ,mdebug=1
12)
13%mp_assertdsobs(work.final2,
14 desc=No changes produces 0 records,
15 test=EQUALS 0,
16 outds=work.test_results
17)
6 Codeblock
DATA STEP Data
Erklärung :
Testszenario 'Nur Löschungen': Simuliert das Löschen von Zeilen und überprüft, ob die Anzahl der erkannten Unterschiede den Erwartungen entspricht (70 Datensätze).
Kopiert!
1/* Test for deletes only */
2DATA work.orig work.deleted work.changed work.appended;
3 SET sashelp.class;
4 OUTPUT work.orig;
5 IF _n_>5 THEN OUTPUT work.deleted;
6RUN;
7 
8%mp_storediffs(sashelp.class,work.orig,NAME
9 ,delds=work.deleted
10 ,modds=work.changed
11 ,appds=work.appended
12 ,outds=work.final3
13 ,mdebug=1
14)
15%mp_assertdsobs(work.final3,
16 desc=Delete has 70 records,
17 test=EQUALS 70,
18 outds=work.test_results
19)
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.