Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Note
Test Altyapısı kullanım dışıdır ve gelecek bir sürümde kaldırılacaktır. Power Platform ve Dynamics 365 hizmetlerindeki test otomasyonu özellikleri için Power Platform Playwright örneklerini kullanın.
Microsoft Power Fx Power Apps kullanılan güçlü bir düşük kod dilidir ve özel test işlevleri oluşturmak için C# kullanılarak genişletilebilir. Bu makalede, hem oluşturucular hem de geliştiriciler için sorunsuz bir deneyim sağlayan bir C# Power Fx test işlevinin nasıl oluşturulacağı açıklanmaktadır.
Power Apps Test Engine'in 'uçurum yok' genişletilebilirlik modeli, kullanıcıların herhangi bir engelle karşılaşmadan Power Apps Test Engine'in yeteneklerini genişletebilmelerini sağlar. Bu model, geliştiricilerin karmaşık senaryoları işlemek için tümleştirilebilen Power Fx C# kullanarak özel işlevler oluşturmasına olanak tanır.
Test Motoru modülleri
Test altyapısı içindeki Power Fx için Test altyapısı modülleri, genişletilebilirlik modeli kullanılarak oluşturulmuştur. Ürün kodunu, Test Engine'in nasıl genişletilebileceğine dair örnekler olarak kullanabilirsiniz.
Onay iletişim kutusu örneği
Aşağıda, bir tuval uygulamasında koşullu onay iletişim kutusunu işlemeye yönelik kodun ana hatlarını sağlayan bir Power Fx işlevi örneği verilmiştir.
Onay iletişim kutusu , kullanıcılara görünen ve belirli kaynaklara erişmek veya belirli eylemleri gerçekleştirmek için izinlerini isteyen bir istemdir. Bu iletişim kutusu, güvenliği sağlamak ve kullanıcıların kendi adlarına gerçekleştirilen eylemlerin farkında olmalarını ve bunları kabul etmelerini sağlamak için çok önemlidir.
Onay iletişim kutusu, yetkisiz erişimin ve eylemlerin önlenmesine yardımcı olduğu için önemlidir. Herhangi bir hassas işlem gerçekleştirilmeden önce kullanıcıların bilgilendirilmesini ve açık rızalarını vermelerini sağlar. Bu, uygulamanın kullanıcı verilerine erişmesi veya eylemler gerçekleştirmesi gereken senaryolarda önemlidir ve bu koşullu davranış otomatik testleri etkileyebilir.
Testte izin iletişim kutularıyla ilgili zorluklar
Onay iletişim kutularıyla ilgili zorluklardan biri, testleri belirleyici olmayan hale getirebilmeleridir. İstem, kullanıcı izinleri veya önceki etkileşimler gibi çeşitli faktörlere bağlı olarak koşullu olarak görünebilir. Bu koşullu görünüm, Test Motorunun bu iletişim kutularını uygun şekilde işlemesi gerektiğinden test sürecini karmaşıklaştırabilir.
Power Fx ile karmaşıklığı soyutlama
Power Fx Onay iletişim kutusunu koşullu olarak beklemenin ve gerekirse bağlantı oluşturmanın karmaşıklığını soyutlamaya yardımcı olur. Oluşturucular, onay iletişim kutularını daha basit ve sezgisel bir şekilde işleme mantığını tanımlamak için kullanabilir Power Fx .
Örnek: Power Fx ile onay iletişim kutusunu işleme
Özel bir sayfada onay iletişim kutusunu işlemek için Power Fx kullanmaya dair bir örnek:
Preview.ConsentDialog(Table({Text: "Center of Excellence Setup Wizard"}))
Bu örnekte işlev, ConsentDialog onay iletişim kutusunun görünür olup olmadığını denetler. Öyleyse, işlev test hesabı için onayı onaylayan iletişim kutusuna yanıt verebilir. İletişim kutusu işlendikten sonra, kalan test adımları yürütülür.
Table bağımsız değişkeni, sağlanan metin ile bir etiket görünür olduğunda, onay iletişim kutusu bekleme işleminin çıkmasına izin verir.
C# kullanarak Power Fx test fonksiyonlarını genişletme
Aşağıdaki örnek, bu örneği tamamlamak için bir başlangıç noktası olarak kullanılabilecek örnek bir anahat kodudur:
// 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 örnek açıklaması
-
Ad alanı ve İçeri aktarmalar: Gerekli ad alanlarını içeri aktarır ve
testengine.modulead alanını tanımlar. -
Sınıf Tanımı: Sınıf
ConsentDialogFunction, ReflectionFunction'tan devralır ve özel işleviConsentDialogtanımlar. -
Oluşturucu: İşlevi, gerekli bağımlılıklarla birlikte
ITestInfraFunctions,ITestState, ve ILogger dahil başlatır. -
Yürütme Yöntemi: Yürütmeyi günlüğe kaydeder ve onay iletişim kutusunu işlemek için
ExecuteAsyncyöntemini çağırır. - ExecuteAsync Yöntemi: Sayfa bağlamını alır ve onay iletişim kutusunu bir zaman aşımıyla işler.