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> はコネクタの名前です。
Note
RunPQSDKTestSuitesSettings.json ファイルで設定できるすべての変数の詳細については、指定された \testframework\tests\RunPQSDKTestSuitesSettingsTemplate.json テンプレートを参照してください。
データ ソース拡張コネクタ固有の詳細でパラメーター クエリと設定ファイルを更新する
PowerShell スクリプト .\RunPQSDKTestSuites.ps1 を実行すると、<拡張機能名>を持つフォルダー、ならびにその配下に「設定フォルダーと ParameterQueries フォルダー」を次のように作成することにより、パラメーター クエリとテスト設定が作成されます。
- testframework\tests\ConnectorConfigs\<Extension Name>\ParameterQueries
- testframework\tests\ConnectorConfigs\<Extension Name>\Settings
次の例では、Contoso という名前のコネクタのパスがどのようになるかについて示されています。
- testframework\tests\TestSuites\Contoso\ParameterQueries
- testframework\tests\TestSuites\Contoso\Settings
Note
生成されたパラメーター クエリ ファイルの M クエリを更新し、データ ソースに接続して以前にアップロードした NycTaxiGreen テーブルと TaxiZoneLookup テーブルを取得します。
または、データ ソースのパラメーター クエリ ファイルと設定ファイルを手動で作成するには、以下の手順を実行します。
- 複製されたリポジトリ フォルダーの配下にある \testframework\tests\ConnectorConfigs フォルダーに移動します。
- \generic フォルダーのコピーを作成し、拡張子名に名前を変更します。
- \ParameterQueries フォルダーの各ファイルを開き、それらのファイルに記載された手順に従って M クエリを更新します。
- \Settings フォルダーの各ファイルを開き、正しいパラメーター クエリ ファイルを指すように、それらのファイルを更新します。
拡張コネクタの認証情報を設定する
set-credential コマンドの手順に従い、コネクタの認証情報が設定されていることを確認します。
または、credential-template コマンドを使用し、set-credential コマンドに渡せるコネクタの JSON 形式の認証情報テンプレートを生成します。 認証情報テンプレートを生成するには、使用に関する「資格情報テンプレート」のセクションを参照してください。
# <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 認証情報ファイルを使用して拡張機能の認証情報を設定します。 コネクタの認証情報を設定するには、使用に関する「認証情報の設定」セクションを参照してください。
$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
Note
または、\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"
まとめ
このセクションでは、パラメーター クエリと設定ファイルを設定する手順について説明しました。その後、設定ファイルはサニティ テストと標準化された一連のテストを実行し、拡張機能コネクタを検証する必要があります。
次のセクションでは、テストを追加する方法について説明します。 テスト フレームワーク内で利用可能なさまざまなコマンドとオプション、ならびにテストのニーズに応じてカスタマイズ可能なさまざまな設定についても説明します。