Power Query SDK 测试框架第 5 部分 - 测试扩展连接器

此参考包含多个部分,介绍适用于 Power Query 连接器开发人员的标准测试套件的设置和运行。 应按顺序执行此参考,以确保将环境设置用于测试自定义连接器。

到目前为止,你已完成下列步骤:

  • 设置环境
  • 上传了测试数据
  • 下载了测试套件
  • 了解了各种文件格式及其功能

最后,可以使用测试套件开始验证扩展连接器。

本部分的操作:

  • 了解如何更新参数查询和设置文件
  • 设置测试框架、连接器扩展和测试设置目录的路径
  • 设置扩展的凭证
  • 通过运行健全性测试来验证测试数据
  • 通过运行标准化的测试集来验证连接器
  • 验证查询折叠并在诊断文件中生成命令文本

在 RunPQSDKTestSuitesSettings.json 文件中设置 PQTest.exe 和扩展路径

导航到 \testframework\tests 并打开克隆的存储库文件夹中的 RunPQSDKTestSuitesSettings.json 文件。 然后在配置文件中设置 PQTest.exe 的路径和扩展名:

  • PQTestExePath:替换为 PQTest.ext 的路径。例如,C:\Users\<UserName>\.vscode\extensions\powerquery.vscode-powerquery-sdk-x.x.x-win32-x64\.nuget\Microsoft.PowerQuery.SdkTools.x.xxx.x\tools\PQTest.exe,其中 <Username> 是用户配置文件文件夹的名称,x.x.x 是 Power Query SDK 扩展的当前版本,x.xxx.x 是 Power Query SDK Tools 的当前版本。
  • ExtensionPath:替换为扩展 mez 文件的路径。 例如,C:\dev\<ConnectorName>\<ConnectorName>.mez,其中 <ConnectorName> 是连接器的名称。

注意

可以在提供的 \testframework\tests\RunPQSDKTestSuitesSettingsTemplate.json 模板中的 RunPQSDKTestSuitesSettings.json 文件中找到有关可设置的所有变量的更多信息。

使用特定于数据源扩展连接器的详细信息更新参数查询和设置文件

运行 PowerShell 脚本 .\RunPQSDKTestSuites.ps1 通过创建具有 <扩展名>的文件夹以及其下的 Settings 和 ParameterQueries 文件夹来创建参数查询和测试设置,如下所示:

  • testframework\tests\ConnectorConfigs\<Extension Name>\ParameterQueries
  • testframework\tests\ConnectorConfigs\<Extension Name>\Settings

以下示例显示了名为 Contoso 的连接器的路径:

  • testframework\tests\TestSuites\Contoso\ParameterQueries
  • testframework\tests\TestSuites\Contoso\Settings

注意

更新生成的参数查询文件中的 M 查询以连接数据源并检索之前上传的 NycTaxiGreen 和 TaxiZoneLookup 表。

或者,若要手动为数据源创建参数查询文件和设置文件,请执行以下步骤:

  1. 导航到克隆的存储库文件夹下的 \testframework\tests\ConnectorConfigs 文件夹。
  2. 创建 \generic 文件夹的副本,并将其重命名为扩展名称。
  3. 打开 \ParameterQueries 文件夹中的每个文件,并按照这些文件中提供的说明更新 M 查询。
  4. 打开 \Settings 文件夹中的每个文件并更新这些文件以指向正确的参数查询文件。

设置扩展连接器的凭证

确保按照 set-credential 命令的说明为连接器设置凭证。

或者,使用 credential-template 命令为连接器生成 JSON 格式的凭证模板,该模板可以传递到 set-credential 命令中。 请参阅“凭证模板”部分,了解用于生成凭证模板的用法。

# <Path to PQTest.exe>.\PQTest.exe credential-template -e <Path to Extension.exe> -q "<Replace with path to any parameter query file>" --prettyPrint --authenticationKind <Specify the authentication kind (Anonymous, UsernamePassword, Key, Windows, OAuth2)>
# Example:
C:\Users\ContosoUser\.vscode\extensions\powerquery.vscode-powerquery-sdk-0.2.3-win32-x64\.nuget\Microsoft.PowerQuery.SdkTools.2.126.3\tools\PQTest.exe credential-template -e "C:\dev\Contoso\Contoso.mez" -q "C:\dev\DataConnectors\testframework\tests\TestSuites\ParameterQueries\Contoso\Contoso.parameterquery.pq" --prettyPrint --authenticationKind UsernamePassword

获取上一个命令的输出,将占位符值替换为正确的凭证,并将其保存为 JSON 文件(例如 contoso_cred.json)。

然后,使用此 set-credential 命令来存储 compare 命令用来运行测试的凭证。 使用现有的 PowerShell 窗口,使用上一步中生成的 JSON 凭证文件设置扩展的凭证。 请参阅 set-credential 中有关用法的部分,以设置连接器的凭证。

$PQTestExe = "C:\Users\ContosoUser\.vscode\extensions\powerquery.vscode-powerquery-sdk-x.x.x-win32-x64\.nuget\Microsoft.PowerQuery.SdkTools.x.xxx.x\tools\PQTest.exe"
$Extension = "C:\dev\Contoso\Contoso.mez"
# Get-Content "<Replace with path to the json credential file>" | & $PQTestExe set-credential -e $Extension -q "<Replace with the path to any parameter query file>"
# Example:
Get-Content "C:\dev\Misc\contoso_cred.json" | & C:\Users\ContosoUser\.vscode\extensions\powerquery.vscode-powerquery-sdk-0.2.3-win32-x64\.nuget\Microsoft.PowerQuery.SdkTools.2.126.3\tools\PQTest.exe  set-credential -p -e "C:\dev\Contoso\Contoso.mez" -q "C:\dev\DataConnectors\testframework\tests\TestSuites\Contoso\ParameterQueries\Contoso.parameterquery.pq"

通过运行健全性测试来验证测试数据是否设置正确

为了确保更改有效并且数据设置正确完成,请使用 \testframework\tests\TestSuites 目录中的 RunPQSDKTestSuites.ps1 实用程序运行健全性测试,如下所示:

.\RunPQSDKTestSuites.ps1 -TestSettingsList SanitySettings.json
<#
Example:
PS C:\dev\DataConnectors\testframework\tests\TestSuites> .\RunPQSDKTestSuites.ps1 -TestSettingsList SanitySettings.json

Output:
----------------------------------------------------------------------------------------------
PQ SDK Test Framework - Test Execution - Test Results Summary for Extension: Contoso.pqx
----------------------------------------------------------------------------------------------
TestFolder  TestName                        OutputStatus TestStatus Duration
----------  --------                        ------------ ---------- --------
Sanity\Taxi AllTypes.query.pq               Passed       Passed     00:00:00.0227976
Sanity\Taxi AllTypesRowCount.query.pq       Passed       Passed     00:00:00.0001734
Sanity\Taxi AllTypesSchema.query.pq         Passed       Passed     00:00:00.0001085
Sanity\Zone AllTypesZone.query.pq           Passed       Passed     00:00:00.0010058
Sanity\Zone AllTypesZoneRowCount.query.pq   Passed       Passed     00:00:00.0001786
Sanity\Zone AllTypesZoneSchema.query.pq     Passed       Passed     00:00:00.0000920
----------------------------------------------------------------------------------------------
Total Tests: 6 | Passed: 6 | Failed: 0 | Total Duration: 00d:00h:00m:01s
----------------------------------------------------------------------------------------------
#>

运行健全性测试和标准测试

使用 RunPQSDKTestSuites.ps1 实用程序运行

若要运行所有健全性测试和标准测试或设置文件定义的一组测试,请运行以下命令来执行测试:

# Run all the Sanity & Standard Tests
.\RunPQSDKTestSuites.ps1
# Example:
# PS C:\dev\DataConnectors\testframework\tests\TestSuites> .\RunPQSDKTestSuites.ps1

若要了解有关 RunPQSDKTestSuites.ps1 实用程序的详细信息,请运行 Get-Help 命令,如下所示:

Get-Help .\RunPQSDKTestSuites.ps1
# Example:
# PS C:\dev\DataConnectors\testframework\tests\TestSuites> Get-Help .\RunPQSDKTestSuites.ps1 -Detailed

使用 PQTest.exe 运行

在同一 PowerShell 窗口中通过以下命令直接使用 PQTest.exe 运行特定测试:

# <Path to PQTest.exe>PQTest.exe compare -p -e $Extension -pa <Replace with path to the parameter query> -q <Replace with the the path to test query>
# Example:
 C:\Users\ContosoUser\.vscode\extensions\powerquery.vscode-powerquery-sdk-0.2.3-win32-x64\.nuget\Microsoft.PowerQuery.SdkTools.2.114.4\tools\PQTest.exe compare -p -e "$Extension" -pa "C:\dev\DataConnectors\testframework\tests\TestSuites\Contoso\ParameterQueries\Contoso.parameterquery.pq" -q "C:\dev\DataConnectors\testframework\tests\TestSuites\Standard\Datatypes\Cast.query.pq"

有关使用 PQTest.exe 运行测试的详细信息,请查看 pqtest-overview 中的文档。

运行查询折叠测试

可以运行任何健全性测试和标准测试来验证查询折叠。 首次运行测试将在 \testframework\tests\<Extension Name>\Diagnostics\ 文件夹下生成诊断输出文件。 后续运行将使用诊断输出文件验证生成的输出。

使用 RunPQSDKTestSuites.ps1 实用程序运行查询折叠测试

验证健全性测试和标准测试的查询折叠,如下所示:

.\RunPQSDKTestSuites.ps1 -ValidateQueryFolding
# Example:
# PS C:\dev\DataConnectors\testframework\tests\TestSuites> .\RunPQSDKTestSuites.ps1 -ValidateQueryFolding

注意

或者,在 \testframework\tests\TestSuite\RunPQSDKTestSuitesSettings.json 文件中指定 ValidateQueryFolding=True

使用 PQTest.exe 运行查询折叠测试

# <Path to PQText.exe> compare -p -e $Extension -pa <Replace with path to the parameter query> -q <Replace with the the path to test query> -dfp <Replace with path to the diagnostic output file>
# Example:
 C:\Users\ContosoUser\.vscode\extensions\powerquery.vscode-powerquery-sdk-0.2.3-win32-x64\.nuget\Microsoft.PowerQuery.SdkTools.2.114.4\tools\PQTest.exe compare -p -e "$Extension" -pa "C:\dev\DataConnectors\testframework\tests\TestSuites\ParameterQueries\Contoso\Contoso.parameterquery.pq" -q "C:\dev\DataConnectors\testframework\tests\TestSuites\Standard\Datatypes\Cast.query.pq" -dfp "C:\dev\DataConnectors\testframework\tests\TestSuites\Contoso\Diagnostics"

结束语

本部分介绍了设置参数查询和设置文件的步骤,随后需要通过运行健全性和标准化测试集来验证扩展连接器。

下一部分将介绍如何添加更多测试。 你还将了解测试框架中可用的各种命令和选项,以及各种可自定义的设置,以满足测试需求。

后续步骤

Power Query SDK 测试框架第 6 部分 - 添加测试和了解各种选项