Jaa


Yksikön testauksen käsittely

Muistiinpano

Tämä sisältö on käytettävissä vanhaan Power Query SDK:hen Visual Studiossa. Visual Studio Coden uusi Power Query SDK sisältää nykyään täysin suositellun testikehyksen , jota suosittelemme testaamaan ja oppimaan lisää.

Yksikkötestien lisääminen on sekä yksinkertaisissa että monimutkaisissa liittimillä paras käytäntö ja erittäin suositeltavaa.

Yksikkötestaus suoritetaan Visual Studion Power Query SDK:n kontekstissa. Jokaisella testillä Fact on nimi, odotettu arvo ja todellinen arvo. Useimmissa tapauksissa "todellinen arvo" on M-lauseke, joka testaa lausekkeen osan.

Harkitse yksinkertaista laajennusta, joka vie kolme funktiota:

section Unittesting;

shared UnitTesting.ReturnsABC = () => "ABC";
shared UnitTesting.Returns123 = () => "123";
shared UnitTesting.ReturnTableWithFiveRows = () => Table.Repeat(#table({"a"},{{1}}),5);

Tämä yksikkötestikoodi koostuu monista faktoista ja joukosta yleisiä koodejä yksikkötestikehykselle (ValueToText, Fact, Facts, Facts.Summarize). Seuraava koodi sisältää esimerkkijoukon faktoja (siirry kohtaan UnitTesting.query.pq yleistä koodia varten):

section UnitTestingTests;

shared MyExtension.UnitTest = 
[
    // Put any common variables here if you only want them to be evaluated once

    // Fact(<Name of the Test>, <Expected Value>, <Actual Value>)
    facts = 
    {
        Fact("Check that this function returns 'ABC'",  // name of the test
            "ABC",                                      // expected value
            UnitTesting.ReturnsABC()                    // expression to evaluate (let or single statement)
        ),
        Fact("Check that this function returns '123'",
            "123",
            UnitTesting.Returns123()
        ),
        Fact("Result should contain 5 rows",
            5,
            Table.RowCount(UnitTesting.ReturnTableWithFiveRows())
        ),
        Fact("Values should be equal (using a let statement)",
            "Hello World",
            let
                a = "Hello World"
            in
                a
        )
    },
    report = Facts.Summarize(facts)
][report];

Mallin suorittaminen Visual Studiossa arvioi kaikki faktat ja antaa visuaalisen yhteenvedon välitysluvuista:

Esimerkki läpivientikoroista.

Kun otat yksikkötestauksen käyttöön liittimen kehitysprosessin varhaisessa vaiheessa, voit noudattaa testipohjaisen kehityksen periaatteita. Kuvittele, että sinun on kirjoitettava funktio nimeltä Uri.GetHost , joka palauttaa vain URI:n isäntätiedot. Voit aloittaa kirjoittamalla testitapauksen varmistaaksesi, että funktio suorittaa odotetun funktion asianmukaisesti:

Fact("Returns host from URI",
    "https://bing.com",
    Uri.GetHost("https://bing.com/subpath/query?param=1&param2=hello")
),
Fact("Handles port number appropriately",
    "https://bing.com:8080",
    Uri.GetHost("https://bing.com:8080/subpath/query?param=1&param2=hello")
)

Lisää testejä voidaan kirjoittaa sen varmistamiseksi, että funktio käsittelee reunatapaukset asianmukaisesti.

Funktion varhainen versio saattaa läpäistä joitakin testejä, mutta ei kaikkia testejä:

Uri.GetHost = (url) =>
    let
        parts = Uri.Parts(url)
    in
        parts[Scheme] & "://" & parts[Host]

Jotkin testit epäonnistuvat.

Funktion lopullisen version tulee läpäistä kaikki yksikkötestit. Tämän ansiosta on myös helppo varmistaa, että funktion tulevat päivitykset eivät poista vahingossa mitään sen perustoimintoja.

Kaikki testit läpäisevät.