Regressiotestaus Vertaa-komennolla
PQTest Compare -komento on tehokas regressiotestaukseen tarkoitettu työkalu, jonka avulla voit arvioida liittimen toimintoja ja komentotekstin luontia perusteellisesti. Sen monipuolisuuden havainnollistamiseksi seuraavissa osioissa annetaan erilaisia esimerkkejä, jotka on räätälöity eri skenaarioita mukaan.
Peruskyselyt
Yksinkertaisin testausmuoto on lisätä yksittäinen kyselylauseke .query.pq-tiedostoon, jonka voit suorittaa käyttämällä Vertaa-komentoa. PQTest arvioi lausekkeen ja luo .pqout-tiedoston (tuloste) samalla nimellä. Kaikissa myöhemmissä suorituksissa se vertaa .query.pq-tiedoston arvioinnista luotua tulosta pqout(output)-tiedostoon samalla nimellä ja palauttaa arvioinnin tuloksen.
Esimerkki 1 – Kyselytiedoston Running Compare -komento, kun tulostetiedostoa ei ole
Seuraava esimerkki suorittaa yksittäisen kyselytestitiedoston käyttäen määritettyä Power Query -laajennusta ja luo tulostetiedoston vertailtavaksi.
<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"
}
]
Esimerkki 2 – Kyselytiedoston Running Compare -komento, kun tulostetiedostoa ei ole olemassa ja FailOnMissingOutputFile-merkintä on määritetty
<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"
}
]
Esimerkki 3 – Running Compare -komento kyselytiedostolle, jossa on tulostetiedosto
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 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"
}
]
Testaaminen parametrikyselyllä
Parametrikysely on kysely, joka yhdistetään suorituksen aikana suoritettavaan testikyselyyn, jossa parametrikysely suoritetaan ensin. Tämän toiminnon avulla voit jakaa PQ/test-kyselytiedoston 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ä tietojen noutamiseen tietolähteestä, ja testikysely on yleinen M. Jos haluat suorittaa testit toiselle liittimelle, sinun tarvitsee vain lisätä/päivittää parametrikysely osoittamaan 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.
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 – Käyttämällä sekä parametrikyselyä että testikyselyä Vertaa-komennolla
<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"
}
]
Diagnostiikan vertailu
Diagnostiikkatietoja voidaan arvioida käyttämällä Vertaa-komentoa tilaamalla diagnostiikkakanavalle. Kun Vertaa-komento suoritetaan, PQTest tulostaa .diagnostics-tiedoston kullekin tilatulle kanavalle, jossa oli tapahtuma. Se vertaa diagnostiikkatapahtumaa tulevissa suorittamisissa sen .diagnostics-tiedostoon, joka on samankaltainen kuin .pqout.
Esimerkki 5 – ODBC:n (Open Database Näyttöyhteys ivity) 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 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 delegoi nyt lähteeseen ja luo seuraavan ODBC-komentotekstin .diagnostics-tiedostoon:
[
{
"Command": "DESCRIBE default.DATABASE;"
},
{
"Command": "select top 1 max(`number_column`) as `C1` from `SPARK`.`default`.`DATABASE`"
}
]
Asetustiedoston käyttäminen
Mikä tahansa vertaa-komennon komentorivin syöteparametri voidaan välittää myös JSON-asetustiedoston kautta. JSON-tiedostossa voi olla seuraavat asetukset:
Asetus | Tyyppi | Kuvaus |
---|---|---|
ExtensionPaths | matriisi | Matriisi poluista, jotka osoittavat liitintiedostoon (mez/pqx). |
FailOnMissingOutputFile | bool | Vertaa-toiminto ei luo PQOut-tiedostoa ja epäonnistuu, jos sitä ei ole olemassa. |
FailOnFoldingFailure | bool | Vertaa epäonnistuu, jos kyselyn delegointi lähteeseen -virhe annetaan. |
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 | Testattava kyselytiedosto, joka sisältää M-lausekkeen (.pq). |
TrxReportPath | merkkijono | Luo TRX (Visual Studio Test Results File) -tulostiedoston ja erottaa JSON-tiedostot kutakin tietyn polun testiä varten. |
Diagnostiset kanavat | matriisi | Testisuoritukseen liitettävien diagnostiikkakanavien nimi (esimerkiksi Odbc kyselyn delegointi lähteeseen -lausekkeiden sieppaamiseksi). |
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 compare -e contoso.mez -q contoso.query.pq -fomof
Yllä oleva komento vastaa seuraavaa komentoa:
<Path to PQTest.exe>.\PQTest.exe compare -sf settings.json
Tässä settings.json on seuraava JSON-tiedosto:
{
"ExtensionPaths": ["contoso.mez"],
"QueryFilePath": "contoso.query.pq",
"FailOnMissingOutputFile": true
}
Testaa paristot Vertaa-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 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.exepqtest.exe compare -e contoso.mez -q .\test