Publicado el :
Macro CREATION_INTERNE

Prueba de la macro `dostuff` con `mp_assertscope`

Este código también está disponible en: Deutsch English Français
En espera de validación
El script primero define la macro `dostuff` que acepta un parámetro `action`. Según el valor de `action` ('ADD', 'DEL', 'MOD', 'NOTHING'), la macro crea variables globales, las elimina, las modifica o no hace nada. Luego, el script ejecuta una serie de pruebas. Cada prueba toma una 'instantánea' del entorno de las variables de macro globales con `%mp_assertscope(SNAPSHOT)`, ejecuta `dostuff` con una acción específica, luego compara el nuevo estado con la instantánea inicial usando `%mp_assertscope(COMPARE, ...)`. Finalmente, `%mp_assert` se utiliza para validar que el informe de comparación (almacenado en una tabla de trabajo) corresponde al resultado esperado para cada acción (adición, modificación, eliminación o ninguna modificación).
Análisis de datos

Type : CREATION_INTERNE


El script no lee ningún dato fuente. Genera dinámicamente tablas de trabajo (work.testing_the_tester1, work.testing_the_tester2, etc.) como salida de la macro de prueba `%mp_assertscope`. Estas tablas contienen los resultados de la comparación del entorno de las variables de macro antes y después de la ejecución de la macro `dostuff`.

1 Bloque de código
MACRO
Explicación :
Definición de la macro 'dostuff'. Toma un parámetro 'action' y puede añadir ('ADD'), eliminar ('DEL') o modificar ('MOD') variables de macro globales (`NEWVAR1`, `NEWVAR2`). La acción 'NOTHING' declara variables locales para una prueba de no modificación del entorno global.
¡Copiado!
1%macro dostuff(ACTION);
2 %IF &ACTION=ADD %THEN %DO;
3 %global NEWVAR1 NEWVAR2;
4 %END;
5 %ELSE %IF &ACTION=DEL %THEN %DO;
6 %symdel NEWVAR1 NEWVAR2;
7 %END;
8 %ELSE %IF &ACTION=MOD %THEN %DO;
9 %let NEWVAR1=Let us pray..;
10 %END;
11 %ELSE %IF &ACTION=NOTHING %THEN %DO;
12 %local a b c d e;
13 %END;
14%mend dostuff;
2 Bloque de código
MACRO Data
Explicación :
Este bloque prueba la adición de variables. `%mp_assertscope(SNAPSHOT)` registra el estado inicial de las variables globales. `%dostuff(ADD)` se llama para crear `NEWVAR1` y `NEWVAR2`. `%mp_assertscope(COMPARE)` compara el estado final con la instantánea y escribe las diferencias en `work.testing_the_tester1`. `%mp_assert` verifica que el comentario de prueba en la tabla de salida indica la adición de estas dos variables.
¡Copiado!
1/* check for adding variables */
2%mp_assertscope(SNAPSHOT)
3%dostuff(ADD)
4%mp_assertscope(COMPARE,outds=work.testing_the_tester1)
5%mp_assert(
6 iftrue=(
7 "%mf_getvalue(work.testing_the_tester1,test_comments)"
8 ="Mod:() Add:(NEWVAR1 NEWVAR2) Del:()"
9 ),
10 desc=Checking RESULT when vars added,
11 outds=work.test_results
12)
3 Bloque de código
MACRO Data
Explicación :
Este bloque prueba la modificación de una variable. Después de la instantánea, `%dostuff(MOD)` modifica `NEWVAR1`. La macro `%mp_assert` valida que el informe de comparación (en `work.testing_the_tester2`) refleja correctamente la modificación de `NEWVAR1`.
¡Copiado!
1/* check for modifying variables */
2%mp_assertscope(SNAPSHOT)
3%dostuff(MOD)
4%mp_assertscope(COMPARE,outds=work.testing_the_tester2)
5%mp_assert(
6 iftrue=(
7 "%mf_getvalue(work.testing_the_tester2,test_comments)"
8 ="Mod:(NEWVAR1) Add:() Del:()"
9 ),
10 desc=Checking RESULT when vars modified,
11 outds=work.test_results
12)
4 Bloque de código
MACRO Data
Explicación :
Este bloque prueba la eliminación de variables. `%dostuff(DEL)` elimina `NEWVAR1` y `NEWVAR2`. La macro `%mp_assert` verifica que el informe de comparación (en `work.testing_the_tester3`) indica la eliminación de estas dos variables.
¡Copiado!
1/* check for deleting variables */
2%mp_assertscope(SNAPSHOT)
3%dostuff(DEL)
4%mp_assertscope(COMPARE,outds=work.testing_the_tester3)
5%mp_assert(
6 iftrue=(
7 "%mf_getvalue(work.testing_the_tester3,test_comments)"
8 ="Mod:() Add:() Del:(NEWVAR1 NEWVAR2)"
9 ),
10 desc=Checking RESULT when vars deleted,
11 outds=work.test_results
12)
5 Bloque de código
MACRO Data
Explicación :
Este bloque verifica que no se realizan modificaciones a las variables globales. `%dostuff(NOTHING)` solo declara variables locales. La macro `%mp_assert` confirma que el informe de comparación (en `work.testing_the_tester4`) indica que las variables globales no han sido modificadas.
¡Copiado!
1/* check for doing nothing */
2%mp_assertscope(SNAPSHOT)
3%dostuff(NOTHING)
4%mp_assertscope(COMPARE,outds=work.testing_the_tester4)
5%mp_assert(
6 iftrue=(
7 "%mf_getvalue(work.testing_the_tester4,test_comments)"
8 ="GLOBAL Variables Unmodified"
9 ),
10 desc=Checking results when nothing created,
11 outds=work.test_results
12)
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de; Copyright © 2021, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. SPDX-License-Identifier: Apache-2.0