Note
この記事では、PowerShell ユーティリティを使用したテストについて説明します。 Visual Studio Code テスト エクスプローラーを使用したテストについては、「
このマルチパート リファレンスでは、Power Query コネクタ開発者向けの標準のテスト スイートのセットアップと実行について説明します。 このリファレンスは、カスタム コネクタのテスト用に環境が設定されていることを確認するために順番に行われることを目的としています。
ここまでで、次の手順を完了しました。
- 環境をセットアップする
- テスト データをアップロードしました
- テスト スイートをダウンロードしました
- さまざまなファイル形式とその機能について学習しました
これで、テスト スイートを使用して拡張機能コネクタの検証を開始する準備が整いました。
このセクションでは、次の操作を行います。
- パラメーター クエリと設定ファイルを更新する方法について説明します
- テスト フレームワーク、コネクタ拡張機能、テスト設定ディレクトリのパスを設定する
- 拡張機能の資格情報を設定する
- サニティ テストを実行してテスト データを検証する
- 標準化された一連のテストを実行してコネクタを検証する
- クエリ フォールディングを検証し、診断ファイル内のコマンド テキストを生成する
RunPQSDKTestSuitesSettings.json ファイルの PQTest.exe パスと拡張パスを設定する
複製されたリポジトリ フォルダー内のファイルの \testframework\tests and open the RunPQSDKTestSuitesSettings.jsに移動します。 次に、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 ツールの現在のバージョンです。
- ExtensionPath: 拡張子 mez ファイルへのパスに置き換えます。 たとえば、C:\dev\<ConnectorName>\<ConnectorName>.mez です。ここで、 <ConnectorName> はコネクタの名前です。
Note
RunPQSDKTestSuitesSettings.json ファイルで設定できるすべての変数の詳細については、テンプレートの指定された \testframework\tests\RunPQSDKTestSuitesSettingsTemplate.jsを参照してください。
データ ソース拡張機能コネクタに固有の詳細を使用してパラメーター クエリと設定ファイルを更新する
PowerShell スクリプトの実行。\RunPQSDKTestSuites.ps1 は、<Extension Name>を含むフォルダーを作成し、その下に 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
Note
生成されたパラメーター クエリ ファイルの M クエリを更新して、データ ソースに接続し、以前にアップロードした NycTaxiGreen テーブルと TaxiZoneLookup テーブルを取得します。
または、次の手順を実行して、データ ソースのパラメーター クエリ ファイルと設定ファイルを手動で作成します。
- 複製されたリポジトリ フォルダーの下にある \testframework\tests\ConnectorConfigs フォルダーに移動します。
- \generic フォルダーのコピーを作成し、拡張子名で名前を変更します。
- \ParameterQueries フォルダー内の各ファイルを開き、それらのファイルに記載されている手順として M クエリを更新します。
- \Settings フォルダー内の各ファイルを開き、正しいパラメーター クエリ ファイルパスを更新します。
拡張機能コネクタの資格情報を設定する
set-credential コマンドの手順に従って、コネクタの資格情報が設定されていることを確認します。
または、set-credential コマンドに渡すことができる credential-template コマンドを使用して、コネクタの JSON 形式の資格情報テンプレートを生成します。 資格情報テンプレートを生成するための使用方法については、「 credential-template 」セクションを参照してください。
# <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 を使用して実行する
PQTest.exeを使用して特定のテストを直接実行するには、同じ PowerShell ウィンドウで次のコマンドを使用します。
# <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.jsに 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"
Conclusion
このセクションでは、パラメーター クエリと設定ファイルを設定する手順について説明しました。このファイルは、正気と標準化された一連のテストを実行して拡張機能コネクタを検証するために必要です。
次のセクションでは、さらにテストを追加する方法について説明します。 また、テスト フレームワーク内で使用できるさまざまなコマンドとオプション、およびテストのニーズに合わせてカスタマイズ可能なさまざまな設定についても説明します。