Märkus.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida sisse logida või kausta vahetada.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida kausta vahetada.
Märkus.
Eelvaatefunktsioonid ei ole mõeldud kasutamiseks tootmises ja nende funktsioonid võivad olla piiratud. Need funktsioonid on saadaval enne ametlikku väljastamist, et kliendid saaksid sellele varakult juurdepääsu ja võiksid tagasisidet anda.
Microsoft Power Fx on võimas madala koodiga keel, mida kasutatakse ja Power Apps mida saab laiendada C# abil kohandatud testifunktsioonide loomiseks. Selles artiklis selgitatakse, kuidas luua funktsiooni C#test Power Fx , mis pakub sujuvat kasutuskogemust nii tegijatele kui ka arendajatele.
Test Engine’i laiendatavuse mudel Power Apps "kaljudeta" tagab, et kasutajad saavad laiendada Power Apps testmootori võimalusi ilma tõkkeid kokku puutumata. See mudel võimaldab arendajatel luua C# abil kohandatud funktsioone, mida saab integreerida Power Fx keeruliste stsenaariumide käsitlemiseks.
Testimootori moodulid
Test Engine’i sisemise testimootori moodulid Power Fx on ehitatud laiendatavuse mudeli abil. Tootekoodi saate kasutada näidetena selle kohta, kuidas Test Engine’i saab laiendada.
Nõusoleku dialoogi näide
Siin on näide funktsioonist Power Fx , mis pakub koodi ülevaadet tingimusliku nõusoleku dialoogi käsitlemiseks lõuendirakenduses.
Nõusoleku dialoog on kasutajatele kuvatav viip, mis küsib neilt luba teatud ressurssidele juurdepääsuks või teatud toimingute tegemiseks. See dialoog on ülioluline turvalisuse säilitamiseks ja selle tagamiseks, et kasutajad oleksid teadlikud nende nimel tehtavatest toimingutest ja nõustuksid nendega.
Nõusoleku dialoog on oluline, kuna see aitab vältida volitamata juurdepääsu ja toiminguid. See tagab, et kasutajaid teavitatakse ja nad annavad oma selgesõnalise nõusoleku enne mis tahes tundlike toimingute tegemist. See on oluline stsenaariumide korral, kus rakendusel on vaja juurdepääsu kasutajaandmetele või toiminguid teha ja see tingimuslik käitumine võib mõjutada automatiseeritud teste.
Nõusolekudialoogide väljakutsed testimisel
Üks nõusolekudialoogide väljakutseid on see, et need võivad muuta testid mittedeterministlikuks. Viip võib tinglikult ilmuda mitmesuguste tegurite (nt kasutaja õiguste või varasemate suhtluste) põhjal. Selline tingimuslik välimus võib testimisprotsessi keerulisemaks muuta, kuna testmootor peab neid dialooge asjakohaselt käsitlema.
Keerukuse abstraheerimine Power Fx
Power Fx aitab abstraheerida nõusolekudialoogi tingimusliku ootamise keerukust ja vajadusel ühenduste loomist. Tegijad saavad seda kasutada Power Fx nõusolekudialoogide lihtsama ja intuitiivsema käsitlemise loogika määratlemiseks.
Näide: nõusolekudialoogi käsitlemine Power Fx
Siin on näide Power Fx nõusolekudialoogi käsitlemisest kohandatud lehel.
Preview.ConsentDialog(Table({Text: "Center of Excellence Setup Wizard"}))
Selles näites kontrollib funktsioon, ConsentDialog kas nõusoleku dialoog on nähtav. Kui see on nii, saab funktsioon vastata dialoogile, mis kinnitab testkonto nõusolekut. Kui dialoog on käsitletud, käivitatakse ülejäänud testisammud.
Argument Table lubab nõusoleku dialoogi ooteprotsessil väljuda, kui esitatud tekstiga silt on nähtav.
Testifunktsioonide laiendamine Power Fx C abil#
Järgmine näide on liigenduskoodi näidis, mida saab kasutada selle näite lõpuleviimise lähtepunktina.
// 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
}
}
}
ConsentDialogFunctioni näidisselgitus
-
Nimeruum ja impordid: impordib vajalikud nimeruumid ja määratleb
testengine.modulenimeruumi. -
Klassi määratlus: klasspärib ReflectionFunctionilt
ConsentDialogFunctionja määratleb kohandatud funktsiooni .ConsentDialog -
Konstruktor: lähtestab funktsiooni vajalike sõltuvustega, sealhulgas
ITestInfraFunctionsITestStateja ILogger. -
Käivitamismeetod: logib täitmise ja kutsub meetodi
ExecuteAsyncnõusolekudialoogi käsitlemiseks. - ExecuteAsync Method: toob lehe konteksti ja käsitleb nõusolekudialoogi ajalõpuga.