Le script utilise le framework de test SASUnit pour définir un scénario de test. Il commence par initialiser des cas de test pour des macros préexistantes. Ensuite, il crée une table de données 'data' pour les tests. Une fonction 'VarianceFormulaType' est définie avec PROC FCMP ; cette fonction encapsule un appel à une macro 'Gest_VarianceFormulaType' via la fonction 'run_macro'. Finalement, un cas de test est exécuté pour valider le comportement de la fonction 'VarianceFormulaType', en manipulant l'option MCOVERAGE pour s'assurer que le test s'exécute correctement. L'assertion finale vérifie que la fonction retourne la valeur attendue.
Analyse des données
Type : CREATION_INTERNE
La table 'work.data' est créée en interne à l'aide d'une étape DATA et d'instructions 'output', la rendant autonome.
1 Bloc de code
Macro
Explication : Initialise le scénario de test avec SASUnit et exécute deux cas de test basés sur des macros (%TestFCMPandMCoverage et %TestFCMPandMCoverage1). Les logs sont ensuite vérifiés pour s'assurer qu'il n'y a pas d'erreurs ou d'avertissements et qu'un message spécifique est présent.
Copié !
%initScenario (i_desc=%str(Test Scenario for MCOVERAGE and FCMP, will always be run because macro Gest_VarianceFormulaType is generated on the fly));
%initTestcase (i_object=TestFCMPandMCoverage.sas, i_desc=Checking MCOVERAGE and simple PROC FCMP call);
%TestFCMPandMCoverage;
%endTestCall;
%assertLog (i_errors=0, i_warnings=0);
%endTestcase;
%initTestcase (i_object=TestFCMPandMCoverage.sas, i_desc=Checking MCOVERAGE and PROC FCMP with PROC FCMP-path);
%TestFCMPandMCoverage1;
%endTestCall;
%assertLog (i_errors=0, i_warnings=0);
%assertLogMsg(i_logMsg=Move disk 04 from A to C);
%endTestcase;
1
%initScenario (i_desc=%str(Test Scenario for MCOVERAGE and FCMP, will always be RUN because macro Gest_VarianceFormulaType is generated on the fly));
2
3
%initTestcase (i_object=TestFCMPandMCoverage.sas, i_desc=Checking MCOVERAGE and SIMPLEPROC FCMP call);
4
%TestFCMPandMCoverage;
5
%endTestCall;
6
%assertLog (i_errors=0, i_warnings=0);
7
%endTestcase;
8
9
%initTestcase (i_object=TestFCMPandMCoverage.sas, i_desc=Checking MCOVERAGE and PROC FCMP with PROC FCMP-path);
10
%TestFCMPandMCoverage1;
11
%endTestCall;
12
%assertLog (i_errors=0, i_warnings=0);
13
%assertLogMsg(i_logMsg=Move disk 04 from A to C);
14
%endTestcase;
2 Bloc de code
DATA STEP Data
Explication : Crée la table 'work.data' qui servira d'entrée pour la fonction de test. Les données sont définies manuellement dans le code.
Explication : Définit une nouvelle fonction 'VarianceFormulaType' avec PROC FCMP et la stocke dans 'work.Gest_Functions.SASUnit'. Cette fonction appelle la macro 'Gest_VarianceFormulaType' en utilisant la fonction 'run_macro' pour déterminer un type de formule de variance.
Copié !
proc fcmp outlib=work.Gest_Functions.SASUnit;
/* Find the type of formula to use for the levels of Variance */
function VarianceFormulaType(SampleFile $,SamplingUnitID $,CountLevelID $) $;
length FormulaType $ 1;
rc = run_macro('Gest_VarianceFormulaType',SampleFile,SamplingUnitID,CountLevelID,FormulaType);
return(FormulaType);
endsub;
run; /* proc fcmp */
1
PROC FCMP outlib=work.Gest_Functions.SASUnit;
2
/* Find the type of formula to use for the levels of Variance */
3
function VarianceFormulaType(SampleFile $,SamplingUnitID $,CountLevelID $) $;
Explication : Configure la librairie de fonctions avec 'options cmplib'. Un cas de test est initialisé pour vérifier la fonction 'VarianceFormulaType'. L'option MCOVERAGE est temporairement désactivée, puis restaurée. Une étape DATA _NULL_ appelle la fonction et stocke le résultat dans une macro-variable 'FormulaType'. Enfin, %assertEquals valide que le résultat est '1' avant de terminer le scénario.
Copié !
options cmplib=work.Gest_Functions;
/*-- Standard case 0--------------------------------------*/
%initTestcase(i_object=%str(Gest_VarianceFormulaType.sas),
i_desc=%str(Standard case 0: VarianceFormulaType 1));
%let SamplingUnitID=%quote(cid eid);
%let CountLevelID=%quote(cid eid);
%let MCOVERAGE=%sysfunc (getoption(MCOVERAGE));
options nomcoverage;
data _null_;
call symput ("FormulaType", VarianceFormulaType("work.data","&SamplingUnitID","&CountLevelID"));
run;
options &mcoverage.;
%assertEquals(i_actual=&FormulaType. , i_expected=1, i_desc=Return Code);
%endTestcase();
%endScenario();
1
options cmplib=work.Gest_Functions;
2
3
/*-- Standard case 0--------------------------------------*/
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« "La force de ce scénario réside dans sa standardisation. En utilisant initScenario et assertEquals, le développeur s'affranchit des vérifications manuelles dans le log.
L'encapsulation de la macro Gest_VarianceFormulaType dans une fonction FCMP rend le code plus lisible et plus facile à appeler directement dans une étape DATA. Ce script de test prouve que cette encapsulation est stable. Le fait de sauvegarder et de restaurer l'état de l'option MCOVERAGE est une 'best practice' indispensable en environnement industriel : cela garantit que le framework de test reste neutre et n'interfère pas avec les paramètres de production du serveur SAS »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.