Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
PQTestin run-compare -komento on tehokas työkalu regressiotestaukseen, jonka avulla voit arvioida liittimen toimintoja ja komentotekstin generointia. Monipuolisuuden havainnollistamiseksi seuraavat osiot tarjoavat erilaisia esimerkkejä, jotka on räätälöity eri tilanteisiin.
Note
Run-compare -komento korvaa edellisen vertailukomennon.
Testisyötemuodot
Run-compare -komento tukee kahta testisyötemuotoa:
-
Lausekemuoto: Yksittäinen M-lauseke (esimerkiksi
letlauseke tai funktiokutsu). Tämä muoto on yksinkertaisin ja sopii useimpiin testitilanteisiin. - Osiodokumentin muoto: M-osaston asiakirja , jossa on yksi tai useampi osaston jäsen. Tämä muoto on hyödyllinen testeissä, jotka vaativat apufunktioita, jaettuja arvoja tai monimutkaisempia asetelmia.
Kun testitiedosto käyttää lausekemuotoa, PQTest muuntaa sen automaattisesti osiodokumentiksi sisäisesti ennen arviointia. Voit myös kirjoittaa testisyötteen suoraan osiodokumentiksi.
Esimerkki lausekemuotoista
let
Source = Contoso.Contents("TestEndpoint"),
Result = Table.RowCount(Source)
in
Result
Osioasiakirjan muotoesimerkki
section Test;
shared Helper = (x) => x + 1;
shared Query = let
Source = Contoso.Contents("TestEndpoint"),
Result = Helper(Table.RowCount(Source))
in
Result;
Kun parametrikysely annetaan, se lisätään osio-asiakirjaan osion jäsenenä. Parametrikysely arvioidaan osana samaa osiota, jolloin testikysely voi viitata siihen suoraan.
Peruskyselyt
Yksinkertaisin testaustapa on lisätä tiedostoon yksittäinen kyselylauseke .query.pq , jonka voi suorittaa run-compare -komennolla. PQTest arvioi lausekkeen ja tuottaa .pqout (tulostus)tiedoston samalla nimellä. Seuraavilla ajoilla se vertaa tiedoston arvioinnista .query.pq tuotettua tulosta samannimiseen .pqout (output)-tiedostoon ja palauttaa arvioinnin tuloksen.
Esimerkki 1 – Run-compare -komennon suorittaminen kyselytiedostolle, kun tulostiedostoa ei ole olemassa
Seuraava esimerkki suorittaa yksittäisen kyselytestitiedoston käyttäen määritettyä Power Query -laajennusta ja luo tulostetiedoston vertailtavaksi.
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q contoso.query.pq
[
{
"Details": "Contoso.Contents(\"TestEndpoint\")",
"EndTime": "2025-12-11T18:04:14.8991822+00:00",
"Method": "Compare.TestFiles",
"Name": "contoso.query.pq",
"StartTime": "2025-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"
}
]
Esimerkki 2 – Run-compare -komennon suorittaminen kyselytiedostolle, kun tulostiedostoa ei ole ja FailOnMissingOutputFile-lippu on asetettu
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q contoso.query.pq -fomof
[
{
"Details": "Contoso.Contents(\"TestEndpoint\")",
"EndTime": "2025-12-11T18:04:14.8991822+00:00",
"Method": "Compare.TestFiles",
"Name": "contoso.query.pq",
"StartTime": "2025-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"
}
]
Esimerkki 3 - Run-compare -komennon suorittaminen kyselytiedostolle, jossa on tulostiedosto
Seuraava esimerkki suorittaa yksittäisen kyselytestitiedoston käyttäen määritettyä Power Query -laajennusta, vertaa sitä tulostiedostoon ja palauttaa tuloksen.
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q contoso.query.pq
[
{
"Details": "Contoso.Contents(\"TestEndpoint\")",
"EndTime": "2025-12-11T18:04:14.8991822+00:00",
"Method": "Compare.TestFiles",
"Name": "contoso.query.pq",
"StartTime": "2025-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"
}
]
Testaaminen parametrikyselyllä
Parametrikysely on kysely, joka yhdistetään suorituksen aikana suoritettavaan testikyselyyn, jossa parametrikysely suoritetaan ensin. Tämä toiminto mahdollistaa ".query.pq"-tiedoston jakamisen kahteen osaan: parametrikyselytiedostoon ja testikyselytiedostoon.
Agnostinen tietolähdetestaus parametrilla ja testikyselyn muodolla
Esimerkki käyttötapauksesta, jossa tästä toiminnosta olisi hyötyä, on tietolähdeagnostisen testiohjelmiston luominen. Voit käyttää parametrikyselyäsi hakeaksesi dataa lähteestä, ja testikysely on geneerinen M. Jos haluat suorittaa testit toiselle liittimelle, sinun tarvitsee vain lisätä/päivittää parametrikysely, joka osoittaa kyseiseen tietolähteeseen.
Parametrikyselyn tärkein ero on se, että testikysely noudattaa eri muotoa. Sen sijaan, että se olisi kaavalauseke, sen on oltava M-funktio, joka ottaa yhden syöteparametrin, joka edustaa parametrikyselystä palautettua taulukkoa.
Kun parametrihaku annetaan, parametrikysely lisätään osion jäsenenä testin osiodokumentin loppuun. Testi- ja parametrisyötteet arvioidaan yhdessä yhtenä Mashup-osiodokumenttina.
Note
Jos parametrikyselytiedostossa on virheitä (esimerkiksi syntaksivirheitä tai arviointivirheitä), PQTest raportoi kuvailevan virheen, joka osoittaa parametritiedoston ongelman sen sijaan, että tuottaisi epäselvän virheen.
Oletetaan, että sinulla on seuraava testikysely:
let
Source = Snowflake.Databases("...", "..."),
Database = Source{[Name="...",Kind="Database"]}[Data],
SelectColumns = Table.RemoveColumns(Database, { "Data" })
in
SelectColumns
Jos haluat muuntaa sen testi- ja parametrikyselyksi, sinun on jaettava ne seuraavasti:
Parametrikysely:
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
Testaa kyselyä:
(Source) => let
SelectColumns = Table.RemoveColumns(Source, { "VendorID" })
in
SelectColumns
Esimerkki 4 – Sekä parametrikyselyn että testikyselyn käyttäminen run-vertaus-komennolla
<Path to PQTest.exe>.\PQTest.exe run-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": "2025-12-11T18:04:14.8991822+00:00",
"Method": "Compare.TestFiles",
"Name": "contoso.query.pq",
"StartTime": "2025-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"
}
]
Diagnostiikan vertailu
Lisädiagnostiikkatietoja voidaan arvioida run-compare -komentoa käyttäessä tilaamalla diagnostiikkakanavan. Kun run-compare -komento suoritetaan, PQTest lähettää .diagnostics tiedoston jokaiselle tilatulle kanavalle, jolla on tapahtuma. Seuraavilla suorituksilla se vertaa diagnostiikkatapahtumaa tiedostoonsa .diagnostics , kuten .pqout.
Esimerkki 5 – DIAGNOStiikkakanavan ODBC(Open Database Connectivity) -diagnostiikkakanavan tilaaminen kyselyn delegoinnin vahvistamiseksi lähteeseen
Seuraavassa esimerkissä näytetään, miten voit tilata ODBC-kanavan, joka sieppaa ODBC-ohjaimen luoman SQL-ohjaimen, kun kyselyn delegointia lähteeseen käytetään.
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q contoso.query.pq -dc "Odbc"
ODBC-diagnostiikkakanavan avulla voidaan varmistaa, että kysely on taittuu ja että se luo oikean SQL:n.
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
Kysely taittuu nyt ja tuottaa tiedostoon seuraavan ODBC-komentotekstin .diagnostics :
[
{
"Command": "DESCRIBE default.DATABASE;"
},
{
"Command": "select top 1 max(`number_column`) as `C1` from `SPARK`.`default`.`DATABASE`"
}
]
Asetustiedoston käyttäminen
Mikä tahansa komentorivin syöteparametri run-compare -komennolle voidaan myös välittää JSON-asetustiedoston kautta. JSON-tiedostossa voi olla seuraavat asetukset:
| Vaihtoehto | Tyyppi | Kuvaus |
|---|---|---|
| ExtensionPaths | matriisi | Matriisi poluista, jotka osoittavat liitintiedostoon (mez/pqx). |
| FailOnMissingOutputFile | bool | Run-compare ei tuota PQOut-tiedostoa ja epäonnistuu, jos sitä ei ole olemassa. |
| FailOnFoldingFailure | bool | Run-compare epäonnistuu, jos kysely ei täysin foldoi. Kun se on käytössä, kyselyt, joita ei voi täysin taittaa tietolähteeseen, aiheuttavat virheen sen sijaan, että palaisivat paikalliseen arviointiin. |
| ParameterQueryFilePath | merkkijono | M-lausekkeita sisältävä kyselytiedosto, joka yhdistetään suorituksen aikana testikyselytiedostoon. Yleinen käyttötapaus on, että käytössä on yksittäinen parametrikyselytiedosto, jolla määritetään M-lauseke useiden testikyselyiden tietojen noutamista varten. |
| QueryFilePath | merkkijono | Kyselytiedosto, joka sisältää M-lausekkeen (.pq) testattavaksi. |
| TrxReportPath | merkkijono | Luo (Visual Studio Test Results File) TRX tulostiedoston ja erilliset JSON-tiedostot jokaiselle testille tietyllä polulla. |
| Diagnostiset kanavat | matriisi | Diagnostiikkakanavien nimet, jotka liitetään testiajoon (esimerkiksi Odbc kyselyn taittolauseiden tallentamiseen). |
| IntermediateTestResultsFolder | merkkijono | Mukautettu kansiopolku välitestitulosten tallentamiseen. |
| PersistIntermediateTestResults | bool | Säilyttää välivaiheen testitulokset testin suorituksen jälkeen. |
Jos käytössä on sekä komentorivin syöte- että asetusasetus, komentorivin syöte priorisoidaan.
Esimerkki 6 – Asetustiedoston käyttäminen komentoriviargumenttien sijaan
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q contoso.query.pq -fomof
Komento vastaa seuraavaa komentoa:
<Path to PQTest.exe>.\PQTest.exe run-compare -sf settings.json
Tässä settings.json on seuraava JSON-tiedosto:
{
"ExtensionPaths": ["contoso.mez"],
"QueryFilePath": "contoso.query.pq",
"FailOnMissingOutputFile": true
}
Testaa akkuja run-compare -komennolla
Testiakku on kokoelma testejä, joissa arvioidaan koodin eri ominaisuuksia. Sijoita kyselytiedostot samaan kansioon, jotta PQTest voi helposti paikantaa ne. Määritä tietyn testitiedostonimen välittämisen sijaan kansiopolku, ja PQTest suorittaa kaikki .query.pq-testikyselytiedostot yksittäisessä läpäisyssä.
Esimerkki 7 - Testiakun suorittaminen
Oletetaan, että kansio nimeltä testi sisältää seuraavat tiedostot:
- contoso.testa.query.pq
- contoso.testb.query.pq
- contoso.testc.query.pq
Koko testiakku voidaan suorittaa seuraavalla komentorivillä:
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q .\test
Testien ohittaminen testejä suoritettaessa
Testi voidaan ohittaa testejä suoritettaessa muuttamalla .query.pq-tiedoston laajennukseksi .query.pq.ignore.
Esimerkki 8 – Testin ohittaminen testejä suoritettaessa
Oletetaan, että kansio nimeltä testi sisältää seuraavat tiedostot:
- contoso.testa.query.pq
- contoso.testb.query.pq.ignore
- contoso.testc.query.pq
Contoso.testa.query.pq- ja contoso.testc.query.pq-tiedostot suoritetaan, mutta contoso.testb.query.pq.ignore ohitetaan, kun testiakun suorittamiseksi suoritetaan seuraava komento:
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q .\test
Suodatustestit
Vaihtoehto --testFilter mahdollistaa testitiedostojen valikoivan sisällyttämisen tai poissulkemisen, kun testiparistot ovat käytössä. Tämä vaihtoehto käyttää glob-kuvioita tiedostopolkujen sovittamiseen ja sitä voidaan määrittää useita kertoja monimutkaisten suodatussääntöjen luomiseksi.
Sisällytyssuodattimet
Määritä, mitkä tiedostot sisällytetään testiajoon, käyttäen tavallisia glob-kuvioita.
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q .\test --testFilter "Suite1/**/*.pq"
Poissulkemissuodattimet
Määritä, mitkä tiedostot suljetaan pois testisuorituksesta käyttämällä etuliitettä ! poissulkemiskuvioiden ilmaisemiseksi.
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q .\test --testFilter "!BrokenTests/*"
Useat suodattimet
Useita --testFilter vaihtoehtoja voidaan yhdistää monimutkaisen suodatuslogiikan luomiseksi:
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q .\test --testFilter "**/*.pq" --testFilter "!BrokenTests/*" --testFilter "!**/*donotrun*.pq"
Suodattimen käyttäytyminen
-
Implisiittinen sisällyttäminen: Kun inkluusiosuodattimia ei ole määritelty,
**/*.query.pqse otetaan automaattisesti käyttöön. - Kirjainkoon liittyvä tunteeton: Kaikki kuviot vastaavat kirjainkoon epäsensitiivisesti.
- Järjestyksestä riippumaton: Suodattimien järjestys ei vaikuta tulokseen.
-
Polun muoto: Käytä eteenpäin suuntaviivoja (
/) kuvioissa eri alustojen yhteensopivuuden takaamiseksi.
Glob-kuvion esimerkkejä
| Malli | Kuvaus |
|---|---|
**/*.pq |
Kaikki .pq tiedostot missä tahansa hakemistossa |
**/*.query.pq |
Kaikki .query.pq tiedostot missä tahansa hakemistossa |
Suite1/**/*.pq |
Kaikki .pq tiedostot Suite1-hakemistossa |
**/test*.pq |
Kaikki .pq tiedostot, jotka alkavat "testi"-kirjaimella |
!BrokenTests/* |
Poista kaikki tiedostot BrokenTests-hakemistosta |
!**/*temp*.pq |
Sulje pois kaikki .pq tiedostot, jotka sisältävät "temp"-tiedostot |
SpecificTest.pq |
Sisällytä vain kyseinen tiedosto |
Note
Suodattimet koskevat relatiivista polkua määritetystä kyselyhakemistosta. Virhe palautetaan, jos suodattimia on saatavilla ja kyselytiedoston polku osoittaa tiettyyn tiedostoon eikä kansioon. Käytä lainausmerkkejä kuvioiden ympärillä estääksesi kuoren laajenemisen.
Testitiedostojen listaaminen ilman suoritusta
Vaihtoehto --listOnly antaa sinun esikatsella, mitkä testitiedostot suoritettaisiin run-compare -komennolla ilman, että testit ajetaan varsinaisesti. Tämä vaihtoehto on hyödyllinen testien löytämisen ja suodattimen käyttäytymisen varmistamiseen.
Esimerkki 9 - Testitiedostojen listaaminen
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q .\test --listOnly
{
"SourcePath": "C:\\MyProject\\test",
"TestFilters": [],
"Tests": [
{
"Test": "MyTest.query.pq",
"RelativePath": "Suite1\\MyTest.query.pq",
"AbsolutePath": "C:\\MyProject\\test\\Suite1\\MyTest.query.pq"
},
{
"Test": "AnotherTest.query.pq",
"RelativePath": "Suite2\\AnotherTest.query.pq",
"AbsolutePath": "C:\\MyProject\\test\\Suite2\\AnotherTest.query.pq"
}
]
}
Tuloste sisältää seuraavat kentät:
-
SourcePath: QueryFilePath-arvo, joka annettiin komennolle (vaihtoehdosta
-q). -
TestFilters: Lista kaikista TestFilter-arvoista, jotka on käytetty (vaihtoehdoista
--testFilter). -
Testit: Testitiedostoobjektien taulukko, jossa kukin olio sisältää:
- Testi: Testitiedoston tiedostonimi.
-
RelativePath: Polku suhteessa perustestihakemistoon, joka on määritelty .
-q - AbsolutePath: Täydellinen absoluuttinen polku testitiedostoon.
Yhdistäminen testisuodattimiin
Vaihtoehto --listOnly kunnioittaa kaikkia --testFilter vaihtoehtoja, jolloin voit esikatsella suodattimiesi vaikutusta:
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q .\test --testFilter "Suite1/**/*.pq" --listOnly
Note
Kaikki testisuodattimet otetaan käyttöön ennen listautumista. Varsinaista testisuoritusta ei tapahdu käytettäessä --listOnly.
Välikokeiden tulosten hallinta
Run-compare -komento tuottaa välitiedostoja testin suorituksen aikana, mukaan lukien varsinaiset testitulostiedostot (.pqout) ja diagnostiikkatiedostot (.diagnostics). Oletuksena nämä tiedostot luodaan väliaikaiseen sijaintiin, jossa on päivämääräpohjainen alikansiorakenne, ja ne siivotaan automaattisesti testiajon päätyttyä.
Voit hallita tätä käyttäytymistä kahdella vaihtoehdolla:
-
--intermediateTestResultsFolder | -itrf: Määrittää mukautetun kansiopolun välitestitulosten tallentamiseen. -
--persistIntermediateTestResults | -pitr: Säilyttää välitulokset testin suorituksen jälkeen.
Esimerkki 10 – Mukautetun välikansion käyttö ja pysyvien tulosten käyttö
<Path to PQTest.exe>.\PQTest.exe run-compare -e contoso.mez -q .\test -itrf "C:\TestResults" -pitr
Välikansiorakenne
Kun määrität välivaiheen testituloskansion, PQTest luo päivämääräperusteisen alikansiorakenteen testitulosten järjestämistä varten:
<IntermediateTestResultsFolder>\
└── YYYYMMDD_HHmmss_ffffff\
├── Test1.query.pqout
├── Test2.query.pqout
├── Test3.query.odbc.diagnostics
└── ...
Siivouskäyttäytyminen
Puhdistuskäyttäytyminen riippuu siitä, määritätkö välikansion ja käytätkö persist-lippua:
| Esimerkkitilanne | Välikansio määritelty | Persist Flag | Toimintatapa |
|---|---|---|---|
| 1 | Ei | Ei | Väliaikaisessa sijainnissa luodut tiedostot, päivämääräpohjainen alikansio poistettu testien jälkeen |
| 2 | Kyllä | Ei | Tiedostot, jotka on luotu tietyssä kansiossa, päivämääräpohjainen alikansio poistetaan testien jälkeen |
| 3 | Ei | Kyllä | Väliaikaisessa sijainnissa luodut tiedostot, päivämääräpohjainen alikansio poistettu testien jälkeen |
| 4 | Kyllä | Kyllä | Tiedostot, jotka on luotu tietyssä kansiossa, säilytetään päivämääräpohjainen alikansio |
Note
Jotta välitulokset pysyvät, sinun täytyy määrittää sekä --intermediateTestResultsFolder että --persistIntermediateTestResults. Pelkkä lippu --persistIntermediateTestResults ilman kansion määrittelyä ei säilytä tuloksia. Jos määriteltyä välikansiota ei ole, PQTest yrittää luoda sen. Suhteelliset polut ovat tuettuja ja ratkaistuja suhteessa nykyiseen työhakemistoon.