Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
PQTest-sammenligne kommandoen er et kraftig verktøy for regresjonstesting, slik at du kan evaluere funksjonene til koblingen grundig og generering av kommandotekst. For å illustrere dens allsidighet gir de påfølgende seksjonene ulike eksempler tilpasset ulike scenarioer.
Important
Kommandoen run-compare erstatter comparna-kommandoen. Bruk run-compe-kommandoen for fremtidig regresjonstesting av Power Query-kontaktene.
Grunnleggende spørringer
Den enkleste formen for testing er å legge til ett enkelt spørringsuttrykk i en .query.pq fil, som du kan utføre med comply-kommandoen . PQTest evaluerer uttrykket og genererer en .pqout (ut)fil med samme navn. For eventuelle påfølgende kjøringer sammenligner den utdataene generert fra evalueringen av .query.pq filen med .pqout (ut)filen med samme navn og returnerer utdataene fra evalueringen.
Eksempel 1 – Kjører sammenligningskommando for en spørringsfil når en utdatafil ikke finnes
Følgende eksempel kjører en enkelt spørringstestfil .query.pq ved bruk av den angitte Power Query-utvidelsen og genererer en utdatafil for sammenligning.
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq
[
{
"Details": "Contoso.Contents(\"TestEndpoint\")",
"EndTime": "2020-12-11T18:04:14.8991822+00:00",
"Method": "Compare.TestFiles",
"Name": "contoso.query.pq",
"StartTime": "2020-12-11T18:04:11.1532388+00:00",
"Output": [
{
"SourceFilePath": "contoso.query.pq",
"OutputFilePath": "contoso.query.pqout",
"Status": "Output File Generated",
"SerializedSource": null,
"SourceError": null,
"OutputError": null
}
],
"Status": "Passed",
"Type": "PQTest.Expression"
}
]
Eksempel 2 – Kommandoen Kjør sammenligning for en spørringsfil når en utdatafil ikke finnes, og FailOnMissingOutputFile-flagget er angitt
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -fomof
[
{
"Details": "Contoso.Contents(\"TestEndpoint\")",
"EndTime": "2020-12-11T18:04:14.8991822+00:00",
"Method": "Compare.TestFiles",
"Name": "contoso.query.pq",
"StartTime": "2020-12-11T18:04:11.1532388+00:00",
"Output": [
{
"SourceFilePath": "contoso.query.pq",
"OutputFilePath": "contoso.query.pqout",
"Status": "Missing Output File",
"SerializedSource": "Output of contoso.query.pq",
"SourceError": null,
"OutputError": null
}
],
"Status": "Failed"
"Type": "PQTest.Expression"
}
]
Eksempel 3 – Kjører sammenligningskommando for en spørringsfil med en utdatafil som finnes
Følgende eksempel kjører en enkelt spørringstestfil ved hjelp av den angitte Power Query-filtypen, sammenligner den med utdatafilen og returnerer resultatet.
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq
[
{
"Details": "Contoso.Contents(\"TestEndpoint\")",
"EndTime": "2020-12-11T18:04:14.8991822+00:00",
"Method": "Compare.TestFiles",
"Name": "contoso.query.pq",
"StartTime": "2020-12-11T18:04:11.1532388+00:00",
"Output": [
{
"SourceFilePath": "contoso.query.pq",
"OutputFilePath": "contoso.query.pqout",
"Status": "Passed",
"SerializedSource": null,
"SourceError": null,
"OutputError": null
}
],
"Status": "Passed",
"Type": "PQTest.Expression"
}
]
Testing med parameterspørring
Parameterspørring er en spørring som kombineres med en testspørring under kjøring, og parameterspørringen kjører først. Med denne funksjonaliteten kan du dele PQ/test-spørringsfilen i to deler: parameterspørringsfilen og testspørringsfilen.
Agnostisk datakildetesting med parameter- og testspørringsformat
Et eksempel på et brukstilfelle der denne funksjonaliteten vil være nyttig, er å opprette en datakildeagnostisk testserie. Du kan bruke parameterspørringen din til å hente data fra datakilden, og ha testspørringen generisk M. Hvis du ønsker å kjøre testene for en annen connector, trenger du bare å legge til/oppdatere parameterspørringen slik at den peker på den spesifikke datakilden.
En viktig forskjell når du bruker en parameterspørring, er at testspørringen følger et annet format. I stedet for å være et formeluttrykk, må det være en M-funksjon som tar én inndataparameter, som representerer tabellen som returneres fra parameterspørringen.
La oss si at du har følgende testspørring:
let
Source = Snowflake.Databases("...", "..."),
Database = Source{[Name="...",Kind="Database"]}[Data],
SelectColumns = Table.RemoveColumns(Database, { "Data" })
in
SelectColumns
Hvis du vil konvertere den til en test- og parameterspørring, må du dele dem på følgende måte:
Parameterspørring:
let
Source = Snowflake.Databases("...", "..."),
Database = Source{[Name="...",Kind="Database"]}[Data],
Schema = Database{[Name="...",Kind="Schema"]}[Data],
Taxi_Table = Schema{[Name="...",Kind="Table"]}[Data],
in
Taxi_Table
Testspørring:
(Source) => let
SelectColumns = Table.RemoveColumns(Source, { "VendorID" })
in
SelectColumns
Eksempel 4 – Bruke både parameterspørring og testspørring med sammenligningskommando
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -pa contoso.parameter.pq
[
{
"Details": "(Source) => let\r\n Schemas = Table.RemoveColumns(Source, { \"Data\" })\r\nin\r\n Schemas",
"EndTime": "2020-12-11T18:04:14.8991822+00:00",
"Method": "Compare.TestFiles",
"Name": "contoso.query.pq",
"StartTime": "2020-12-11T18:04:11.1532388+00:00",
"Output": [
{
"SourceFilePath": "contoso.query.pq",
"OutputFilePath": "contoso.query.pqout",
"Status": "Passed",
"SerializedSource": null,
"SourceError": null,
"OutputError": null
}
],
"Status": "Passed",
"Type": "PQTest.Expression"
}
]
Sammenligning av diagnostikk
Ekstra diagnoseinformasjon kan evalueres når du bruker sammenligne-kommandoen ved å abonnere på en diagnosekanal. Når sammenligningskommandoen kjøres, sender PQTest ut en .diagnostics fil for hver abonnert kanal som hadde en hendelse. For påfølgende kjøringer sammenligner den diagnostiske hendelsen med sin .diagnostics fil, på samme måte som .pqout.
Eksempel 5 – Abonner på diagnosekanalen ODBC (Open Database Connectivity) for å validere spørringsdelegering
Eksemplet nedenfor viser hvordan du abonnerer på ODBC-kanalen, som registrerer sql-en som genereres av ODBC-driveren når spørringsdelegering brukes.
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -dc "Odbc"
ODBC-diagnosekanalen kan brukes til å bekrefte at en spørring brettes og at den genererer riktig SQL.
let
Source = AzureSpark.Tables("...")
T1 = Source{[Schema="default",Item="DATABASE"]}[Data],
SelectColumns = Table.Group(T1, {}, {{"Maximum", each List.Max([number_column]), type number}}),
FirstN = Table.FirstN(SelectColumns, 1)
in
FirstN
Spørringen brettes nå og genererer følgende ODBC-kommandotekst i filen .diagnostics :
[
{
"Command": "DESCRIBE default.DATABASE;"
},
{
"Command": "select top 1 max(`number_column`) as `C1` from `SPARK`.`default`.`DATABASE`"
}
]
Bruke en innstillingsfil
Alle inndataparametere for kommandolinjen for sammenligne-kommandoen, kan også sendes via en JSON-innstillingsfil. JSON kan ha følgende alternativer:
| Alternativ | Type | Beskrivelse |
|---|---|---|
| ExtensionPaths | matrise | Matrise med baner som peker til koblingsfil (mez/pqx). |
| FailOnMissingOutputFile | Bool | Compare genererer ikke en .pqout fil og feiler hvis den ikke eksisterer. |
| FailOnFoldingFailure | Bool | Sammenligning mislykkes hvis det oppstår en feil under spørringsdelegering. |
| ParameterQueryFilePath | streng | Spørringsfil som inneholder M-uttrykk, som kombineres ved kjøring med testspørringsfilen. Et vanlig brukstilfelle er å ha én enkelt parameterspørringsfil for å angi et M-uttrykk for å hente dataene for flere testspørringer. |
| QueryFilePath | streng | Spørringsfil som inneholder M-uttrykk (.pq) som skal testes. |
| TrxReportPath | streng | Genererer en TRX (Visual Studio Test Results File) resultatfil og separate JSON-filer for hver test i en gitt sti. |
| DiagnosticChannels | matrise | Navn på diagnostiske kanaler som skal knyttes til testkjøringen (for eksempel Odbc for å fange spørringsfolding-setninger). |
I tilfelle både kommandolinjeinndata og innstillinger er angitt, prioriteres kommandolinjeinndataene.
Eksempel 6 – Bruke innstillingsfil i stedet for kommandolinjeargumenter
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q contoso.query.pq -fomof
Kommandoen tilsvarer følgende kommando:
<Path to PQTest.exe>.\PQTest.exe compare -sf settings.json
Hvor settings.json er følgende JSON-fil:
{
"ExtensionPaths": ["contoso.mez"],
"QueryFilePath": "contoso.query.pq",
"FailOnMissingOutputFile": true
}
Test batterier med sammenligningskommando
Et testbatteri er en samling tester som evaluerer flere aspekter av koden. Plasser spørringsfilene i samme mappe, slik at PQTest enkelt kan finne dem. I stedet for å sende et bestemt testfilnavn, angir du mappebanen, og PQTest utfører alle .query.pq-testspørringsfilene i ett enkelt pass.
Eksempel 7 – Kjøre et batteri av tester
Forutsatt at en mappe med navnet test som inneholder følgende filer:
- contoso.testa.query.pq
- contoso.testb.query.pq
- contoso.testc.query.pq
Hele testbatteriet kan kjøres ved hjelp av følgende kommandolinje:
<Path to PQTest.exe>.\PQTest.exe compare -e contoso.mez -q .\test
Ignorerer tester når du kjører et batteri av tester
En test kan ignoreres når du kjører et batteri av tester ved å endre utvidelsen av .query.pq-filen til .query.pq.ignore.
Eksempel 8 – Ignorerer en test når du kjører et batteri av tester
Forutsatt at en mappe med navnet test som inneholder følgende filer:
- contoso.testa.query.pq
- contoso.testb.query.pq.ignore
- contoso.testc.query.pq
Contoso.testa.query.pq- og contoso.testc.query.pq-filene kjøres, men contoso.testb.query.pq.ignore ignoreres når følgende kommando utføres for å kjøre testbatteriet:
<Path to PQTest.exe>.\PQTest.exepqtest.exe compare -e contoso.mez -q .\test