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 表。
或者,若要手动为数据源创建参数查询文件和设置文件,请执行以下步骤:
- 导航到克隆的存储库文件夹下的 \testframework\tests\ConnectorConfigs 文件夹。
- 创建 \generic 文件夹的副本,并将其重命名为扩展名称。
- 打开 \ParameterQueries 文件夹中的每个文件,并按照这些文件中提供的说明更新 M 查询。
- 打开 \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"
结束语
本部分介绍了设置参数查询和设置文件的步骤,随后需要通过运行健全性和标准化测试集来验证扩展连接器。
下一部分将介绍如何添加更多测试。 你还将了解测试框架中可用的各种命令和选项,以及各种可自定义的设置,以满足测试需求。