Publié le :
Test SASHELP

Test unitaire de la macro mf_getvarlist

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script effectue une série de tests unitaires pour la macro `mf_getvarlist`. Il appelle la macro à plusieurs reprises avec diverses configurations : sans option (listes par défaut), avec un délimiteur personnalisé ('X'), avec un délimiteur et des guillemets doubles, et avec des filtres pour les variables numériques ou caractères. Les résultats de chaque appel de macro sont stockés dans des variables macro. Ensuite, un pas DATA est utilisé pour comparer ces résultats obtenus avec des valeurs attendues, et enregistre le statut de chaque test (PASS/FAIL) ainsi que des commentaires explicatifs dans une table SAS© nommée `work.test_results`.
Analyse des données

Type : SASHELP


Le script utilise la table `sashelp.class`, qui est une table d'exemple standard fournie avec SAS, comme source de données pour la macro `mf_getvarlist`. Aucune donnée externe n'est requise et toutes les données de test sont générées ou proviennent de SASHELP. Les résultats des tests sont ensuite stockés dans la table interne `work.test_results`.

1 Bloc de code
Appels de macro
Explication :
Ce bloc de code effectue plusieurs appels à la macro `%mf_getvarlist`. Chaque appel utilise la table `sashelp.class` comme entrée et varie les options pour le délimiteur (`dlm`) et le filtrage par type de variable (`typefilter`). Les résultats (listes de noms de variables) sont stockés dans des variables macro (`test1` à `test5`) pour une évaluation ultérieure.
Copié !
1%let test1=%mf_getvarlist(sashelp.class);
2%let test2=%mf_getvarlist(sashelp.class,dlm=X);
3%let test3=%mf_getvarlist(sashelp.class,dlm=%str(,),quote=double);
4%let test4=%mf_getvarlist(sashelp.class,typefilter=N);
5%let test5=%mf_getvarlist(sashelp.class,typefilter=C);
2 Bloc de code
DATA STEP Data
Explication :
Ce bloc `DATA STEP` crée la table `work.test_results` pour consigner les résultats des tests. Pour chaque cas de test, il récupère la valeur de la variable macro correspondante (contenant la liste des variables extraites par `%mf_getvarlist`) via `symget()`. Il compare ensuite cette valeur à une chaîne de caractères `result` prédéfinie qui représente le résultat attendu. Un statut 'PASS' ou 'FAIL' est attribué en fonction de cette comparaison, et des commentaires détaillés sont enregistrés. Les variables temporaires `base` et `result` sont ensuite supprimées.
Copié !
1DATA work.test_results;
2 LENGTH test_description $256 test_result $4 test_comments base RESULT $256;
3 test_description="Basic test";
4 base=symget('test1');
5 RESULT='Name Sex Age Height Weight';
6 IF base=RESULT THEN test_result='PASS';
7 ELSE test_result='FAIL';
8 test_comments="Comparing "!!trim(base)!!' vs '!!trim(RESULT);
9 OUTPUT;
10 
11 test_description="DLM test";
12 base=symget('test2');
13 RESULT='NameXSexXAgeXHeightXWeight';
14 IF base=RESULT THEN test_result='PASS';
15 ELSE test_result='FAIL';
16 test_comments="Comparing "!!trim(base)!!' vs '!!trim(RESULT);
17 OUTPUT;
18 
19 test_description="DLM + quote test";
20 base=symget('test3');
21 RESULT='"Name","Sex","Age","Height","Weight"';
22 IF base=RESULT THEN test_result='PASS';
23 ELSE test_result='FAIL';
24 test_comments="Comparing "!!trim(base)!!' vs '!!trim(RESULT);
25 OUTPUT;
26 
27 test_description="Numeric Filter";
28 base=symget('test4');
29 RESULT='Age Height Weight';
30 IF base=RESULT THEN test_result='PASS';
31 ELSE test_result='FAIL';
32 test_comments="Comparing "!!trim(base)!!' vs '!!trim(RESULT);
33 OUTPUT;
34 
35 test_description="Char Filter";
36 base=symget('test5');
37 RESULT='Name Sex';
38 IF base=RESULT THEN test_result='PASS';
39 ELSE test_result='FAIL';
40 test_comments="Comparing "!!trim(base)!!' vs '!!trim(RESULT);
41 OUTPUT;
42 
43 drop base RESULT;
44RUN;
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.
Informations de Copyright : Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de. Ce fichier fait partie de SASUnit, le framework de test unitaire pour les programmes SAS(R). Pour les informations de copyright et les conditions d'utilisation sous la licence publique générale limitée GNU, voir le fichier inclus README.md ou https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.