Compartir a través de


Marco de pruebas del SDK de Power Query, parte 7: guía de canalización

Esta referencia de varias partes abarca la configuración y ejecución de un conjunto estándar de pruebas para desarrolladores de conectores de Power Query. La referencia está pensada para realizarse secuencialmente a fin de asegurarse de que el entorno está configurado para probar el conector personalizado.

En esta guía se proporcionan los pasos necesarios a fin de configurar una canalización para el marco de pruebas del SDK de Power Query.

En esta sección:

  • Introducción a la configuración de la canalización
  • Configuración de un agente de canalización
  • Aprender a configurar el conector, incluido el controlador y la configuración de credenciales
  • Ejecución de las pruebas para comprobar el conector de extensión
  • Generación del informe de la ejecución de pruebas

Guía de configuración de canalización para conectores de Power Query

En esta guía se proporcionan los pasos necesarios a fin de configurar una canalización para el marco de pruebas del SDK de Power Query. En un nivel alto, requiere configurar un agente, configurar el conector que se está probando, incluidos los controladores configurados, configurar las credenciales de PQTest con el mecanismo de autenticación admitido, ejecutar las pruebas e informar de los resultados. En este documento se usan Azure Pipelines y recursos para todos sus ejemplos. Sin embargo, estos conceptos se pueden aplicar a otras arquitecturas de canalización.

La canalización usa la estructura siguiente:

  1. Recuperar las pruebas de un repositorio.
  2. Recuperar o establecer las credenciales para acceder al origen de datos mediante el mecanismo de autenticación admitido.
  3. Ejecutar las pruebas recuperadas en el paso anterior.
  4. Actualizar los resultados y los registros.

En la documentación de Azure Pipelines se describe cómo configurar una canalización básica. Consulte las secciones siguientes para obtener consejos sobre cómo configurar estas características.

  • Requisitos previos del agente
    • Redes
    • Permisos
    • PQTest
    • Controladores
  • Credenciales
  • Scripts
    • Acceso automatizado a credenciales
    • Ejecutar pruebas
    • Automatizar scripts

Requisitos previos del agente

El agente de canalización debe incluir el SDK de Power Query y configurarse para poder ejecutar PQTest. Esta configuración incluye acceso al origen de datos pertinente y al administrador de credenciales, si procede.

Todos estos requisitos se pueden cumplir mediante un agente autohospedado. Azure Pipelines puede proporcionar agentes hospedados por Microsoft, pero es poco probable que estos agentes contengan el SDK de Power Query y podría haber obstáculos de red que se deben tener en cuenta. El uso de una máquina virtual o un equipo físico como agente de canalización puede garantizar que PQTest pueda conectarse al origen de datos.

Redes

Para ejecutar pruebas de conector, el agente debe poder acceder al origen de datos pertinente. Es probable que los orígenes de datos en la nube (por ejemplo, Snowflake y Google Big Query) sean fácilmente accesibles, pero los orígenes de datos locales (por ejemplo, SAP BW y SQL Server) necesitan más configuraciones. Estas configuraciones podrían requerir que el agente esté conectado a la misma red virtual, que el firewall del agente permita los puertos correctos, etc.

Permisos

Si su intención es extraer automáticamente las credenciales de un almacén de claves, el agente necesita un método para hacerlo. El método recomendado es establecer una identidad administrada para una máquina virtual y asignar los permisos necesarios al almacén de claves.

PQTest

El archivo ejecutable PQTest debe estar instalado en el agente. El método recomendado es descargar el paquete NuGet del SDK de Power Query y descomprimirlo en el agente.

El archivo ejecutable PQTest se puede encontrar en la carpeta paquetes \tools de NuGet. Use el argumento --help a fin de mostrar información de ayuda para PQTest.exe y familiarizarse con sus comandos.

Controladores

Para los conectores ODBC, los controladores deben agregarse a una carpeta Controladores ODBC en la siguiente ruta de acceso:

<power_query_sdk_extension_path>\Microsoft.PowerQuery.SdkTools.2.xxx.x\tools\ODBC Drivers<drivers>

Por ejemplo, para el controlador Contoso, la ruta de acceso podría ser la siguiente:

C:\Users\ContosoUser.vscode\extensions\powerquery.vscode-powerquery-sdk-0.2.3-win32-x64.nuget\Microsoft.PowerQuery.SdkTools.2.126.3\tools\ODBC Driver\Contoso

Credenciales

Las credenciales se pasan a PQTest mediante la extensión de Visual Studio Code o el comando set-credential a través de la línea de comandos. Una vez establecida, estas credenciales se pueden reutilizar para varias ejecuciones de pruebas.

Según el tipo de autenticación, es posible que estas credenciales solo deban establecerse una vez (nombre de usuario/contraseña) o mantenerse actualizadas (token de actualización de OAuth2). El caso anterior se puede configurar fácilmente mediante la interfaz de Visual Studio Code. Este último caso se puede lograr mediante la creación de un script.

Scripts

PQTest se puede usar completamente desde la línea de comandos, lo que permite la automatización a través de scripts.

Acceso automatizado a credenciales

Para automatizar el acceso a credenciales para PQTest, se recomienda usar un almacén de claves. De este modo, las credenciales se pueden actualizar fácilmente y se pueden crear scripts.

  1. El primer paso es conceder acceso a la identidad administrada del agente.
  2. A continuación, puede invocar una API Rest para acceder a los datos.

Ahora que tiene una manera de obtener secretos, puede agregarlos a la caché de credenciales de PQTest.

  1. Utilice el comando credential-template para crear una plantilla JSON. Esta plantilla contiene texto de marcador de posición ($$USERNAME$$, $$REFRESH_TOKEN$$, etc.), que se puede modificar dinámicamente mediante funciones de reemplazo de cadena.

    $keyVaultOutput = invoke-expression 'Get-AzKeyVaultSecret -VaultName $keyVaultName -Name $secretName -AsPlainText'
    $jsonTemplate = invoke-expression "$pqTestExe credential-template -e $extensionFile -q $queryFile -ak $authenticationType"
    $jsonCredential = $jsonTemplate.Replace('$$USERNAME$$', $credentialName)
    $jsonCredential = $jsonCredential.Replace('$$PASSWORD$$', $keyVaultOutput)
    
  2. Pase la plantilla JSON modificada al comando set-credential mediante la canalización (|) o la entrada (<).

    $jsonCredential | & $pqTestExe set-credential -e $extensionFile -q $queryFile
    

Ahora que están establecidas las credenciales, se pueden ejecutar las pruebas.

Nota: El comando list-credential se puede usar para confirmar que la credencial está establecida correctamente.

Ejecutar pruebas

Las pruebas se pueden ejecutar mediante el comando usando el comando compare. Por ejemplo, para ejecutar una sola prueba:

.\PQTest.exe compare -e <connector file> -q <query file> -p

Para ejecutar varias pruebas:

.\PQTest.exe compare -e <connector file> -q <query folder> -sq <base query file> -p

Automatizar scripts

Los scripts se pueden automatizar ejecutándolos desde una tarea de canalización. Para Azure Pipelines, se puede usar la tarea de PowerShell:

# Example Azure pipeline for running connector tests using PQTest.
# Azure Pipelines reference: https://aka.ms/yaml
trigger: none
pool:
  name: SelfHosted-AgentPool
steps:
  - task: PowerShell@2
    inputs:
      filePath: '<path_to_run_test_script>/RunConnectorTest.ps1'
    displayName: 'Run Connector Tests'

Conclusión

En esta sección se muestra cómo establecer y configurar la canalización para usar el marco de pruebas del SDK de Power Query, mediante el conjunto de pruebas proporcionado y también sus propias pruebas para validar el conector de extensión.

En general, ahora debería poder realizar cambios de forma fiable en la extensión y validarlos durante el desarrollo y la versión.