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.
Muistiinpano
Esiversiotoimintoja ei ole tarkoitettu tuotantokäyttöön, ja niiden toiminnot voivat olla rajoitettuja. Nämä toiminnot ovat käytettävissä ennen virallista julkaisua, jotta asiakkaat voivat käyttää niiden ennakkojulkaisua ja antaa palautetta.
Microsoft Power Fx on tehokas vähäkoodinen kieli, jota käytetään Power Apps, ja sitä voidaan laajentaa C#:lla mukautettujen testifunktioiden luomiseen. Tässä artikkelissa kerrotaan, miten voit luoda C# Power Fx test-funktion, joka tarjoaa saumattoman käyttökokemuksen sekä tekijöille että kehittäjille.
Test Enginen "ei kallioita" -laajennettavuusmalli Power Apps varmistaa, että käyttäjät voivat laajentaa testimoottorin ominaisuuksia Power Apps törmäämättä esteisiin. Tämän mallin avulla kehittäjät voivat luoda mukautettuja funktioita C#:n avulla, jotka voidaan integroida Power Fx monimutkaisten skenaarioiden käsittelemiseksi.
Testaa moottorin moduulit
Testimoduulin sisäpuolen testimoduulit Power Fx on rakennettu laajennettavuusmallin avulla. Voit käyttää tuotekoodia esimerkkinä siitä, miten Test Engineä voidaan laajentaa.
Esimerkki suostumusvalintaikkunasta
Tässä on esimerkki Power Fx funktiosta, joka tarjoaa koodin ääriviivat ehdollisen suostumuksen valintaikkunan käsittelemiseksi pohjaan perustuvassa sovelluksessa.
Suostumusvalintaikkuna on käyttäjille näkyviin tuleva kehote, jossa pyydetään heiltä lupaa käyttää tiettyjä resursseja tai suorittaa tiettyjä toimintoja. Tämä valintaikkuna on ratkaisevan tärkeä turvallisuuden ylläpitämiseksi ja sen varmistamiseksi, että käyttäjät ovat tietoisia ja hyväksyvät heidän puolestaan tehtävät toimet.
Suostumusvalintaikkuna on tärkeä, koska se auttaa estämään luvattoman käytön ja toiminnot. Se varmistaa, että käyttäjät saavat tietoa ja antavat nimenomaisen suostumuksensa ennen arkaluonteisten toimintojen suorittamista. Tämä on tärkeää skenaarioissa, joissa sovelluksen on käytettävä käyttäjätietoja tai suoritettava toimintoja ja tämä ehdollinen toiminta voi vaikuttaa automaattisiin testeihin.
Suostumusikkunoiden haasteet testauksessa
Yksi suostumusdialogien haasteista on, että ne voivat tehdä testeistä ei-deterministisiä. Kehote voi tulla ehdollisesti näkyviin useiden tekijöiden, kuten käyttöoikeuksien tai aiempien vuorovaikutusten, perusteella. Tämä ehdollinen ulkoasu voi vaikeuttaa testausprosessia, koska testimoottorin on käsiteltävä näitä valintaikkunoita asianmukaisesti.
Monimutkaisuuden abstraktointi Power Fx
Power Fx auttaa abstraktoimaan suostumusvalintaikkunan ehdollisen odottamisen monimutkaisuuden ja luomaan yhteyksiä tarvittaessa. Tekijät voivat määrittää Power Fx suostumusvalintaikkunoiden käsittelyn logiikan yksinkertaisemmalla ja intuitiivisemmalla tavalla.
Esimerkki: Suostumusvalintaikkunan käsittely Power Fx
Tässä on esimerkki Power Fx suostumusvalintaikkunan käsittelystä mukautetulla sivulla:
Preview.ConsentDialog(Table({Text: "Center of Excellence Setup Wizard"}))
Tässä esimerkissä toiminto tarkistaa, ConsentDialog onko suostumusikkuna näkyvissä. Jos näin on, funktio voi vastata testitilin suostumuksen vahvistavaan valintaikkunaan. Kun valintaikkuna on käsitelty, loput testivaiheet suoritetaan.
Argumentti Table sallii suostumusvalintaikkunan odotusprosessin poistumisen, jos näkyvissä on otsikko, jossa on annettu teksti.
Testitoimintojen laajentaminen Power Fx C:n avulla#
Seuraavassa esimerkissä on esimerkki jäsennyskoodista, jota voidaan käyttää lähtökohtana tämän esimerkin suorittamisessa:
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
using Microsoft.Extensions.Logging;
using Microsoft.Playwright;
using Microsoft.PowerApps.TestEngine.Config;
using Microsoft.PowerApps.TestEngine.TestInfra;
using Microsoft.PowerFx;
using Microsoft.PowerFx.Core.Utils;
using Microsoft.PowerFx.Types;
namespace testengine.module
{
/// <summary>
/// This will check the custom pages of a model driven app looking for a consent dialog
/// </summary>
public class ConsentDialogFunction : ReflectionFunction
{
private readonly ITestInfraFunctions _testInfraFunctions;
private readonly ITestState _testState;
private readonly ILogger _logger;
private static TableType SearchType = TableType.Empty()
.Add(new NamedFormulaType("Text", FormulaType.String, displayName: "Text"));
/// <summary>
/// Constructor: Initializes the function with necessary dependencies,
/// including ITestInfraFunctions, ITestState, and ILogger.
/// </summary>
/// <param name="testInfraFunctions">The test infrastructure functions.</param>
/// <param name="testState">The test state.</param>
/// <param name="logger">The logger instance.</param>
public ConsentDialogFunction(ITestInfraFunctions testInfraFunctions,
ITestState testState,
ILogger logger) : base(DPath.Root.Append(
new DName("Preview")),
"ConsentDialog",
FormulaType.Blank,
SearchType)
{
_testInfraFunctions = testInfraFunctions;
_testState = testState;
_logger = logger;
}
/// <summary>
/// Execute Method: Logs the execution and calls the ExecuteAsync
/// method to handle the consent dialog.
/// </summary>
/// <param name="searchFor">The table value to search for.</param>
/// <returns>A blank value.</returns>
public BlankValue Execute(TableValue searchFor)
{
_logger.LogInformation("------------------------------\n\n" +
"Executing ConsentDialog function.");
ExecuteAsync(searchFor).Wait();
return FormulaValue.NewBlank();
}
/// <summary>
/// ExecuteAsync Method: Retrieves the page context and handles the consent dialog with a timeout.
/// </summary>
/// <param name="searchFor">The table value to search for.</param>
/// <returns>A task representing the asynchronous operation.</returns>
private async Task ExecuteAsync(TableValue searchFor)
{
var page = _testInfraFunctions
.GetContext()
.Pages
.Where(p => p.Url.Contains("main.aspx"))
.First();
// ... IPage to handle consent dialog with timeout
}
}
}
ConsentDialogFunction-esimerkin selitys
-
Nimiavaruus ja tuonnit: Tuo tarvittavat nimitilat ja määrittää
testengine.modulenimitilan. -
Luokan määritelmä: Luokkaperii ReflectionFunctionista
ConsentDialogFunctionja määrittää mukautetun funktion .ConsentDialog -
Konstruktori: Alustaa funktion tarvittavilla riippuvuuksilla, mukaan lukien
ITestInfraFunctions,ITestState, ja ILogger. -
Suoritustapa: Kirjaa suorituksen ja kutsuu menetelmää
ExecuteAsynckäsittelemään suostumusvalintaikkunaa. - ExecuteAsync-menetelmä: Hakee sivun kontekstin ja käsittelee suostumusvalintaikkunan aikakatkaisulla.