共用方式為


Power Apps 測試引擎 YAML 格式 (預覽版)

備註

預覽功能不供生產時使用,而且可能功能受限。 這些功能可在正式發行之前提供,讓客戶可以取得早期存取並提供意見反應。

測試是在 YAML 中定義,遵循與 Power Fx 相同的指導方針。 深入瞭解 Power Fx YAML 公式文法

如需詳細範例,請檢視 PowerApps-TestEngine/samples 資料夾。

YAML 結構描述定義

房產 Description
測試套件 定義一個測試套件、測試套件中的測試案例,以及測試套件特定的配置
測試設定 定義在多個測試案例中重複使用的測試套件設定
環境變數 定義當應用程式移植到不同環境時可能會變更的變數

測試套件

用來定義一個測試。

房產 類型 Description
persona 字串 必須的。 登入以執行測試的使用者。 必須符合 使用者 區段中列出的角色。
testCases 測試案例 必須的。 定義測試套件中的測試案例。 測試套件中包含的測試案例會循序執行。 應用程式狀態會在套件中的所有測試案例中保存。
testSuiteName 字串 必須的。 測試套件的名稱。
appLogicalName 字串 選擇性。 要啟動的應用程式的邏輯名稱。 它可以從溶液中獲得。 對於畫布應用程序,您需要將其添加到解決方案中才能獲取它。 請參閱如何在 測試計劃中識別您的應用程式
appId Guid 選擇性。 要啟動的應用程式識別碼。 必要且僅在不存在時 appLogicalName 使用。 應用程式識別碼應該只用於不在解決方案中的畫布應用程式。 請參閱如何在 測試計劃中識別您的應用程式
networkRequestMocks NetworkRequest模擬 選擇性。 定義測試所需的網路請求模擬。
onTestCaseComplete 字串 選擇性。 定義案例完成執行後,套件中每個測試案例需要觸發的步驟。
onTestCaseStart 字串 選擇性。 定義在案例開始執行之前,需要針對套件中的每個測試案例觸發的步驟。
onTestSuiteComplete 字串 選擇性。 定義套件完成執行後需要觸發的步驟。
testSuiteDescription 字串 選擇性。 其他資訊說明測試套件的用途。

如何在測試計劃中識別您的應用程式

您需要設定 或 appLogicalNameappId 來識別您的應用程式。 您使用的取決於您的應用程式是否在解決方案中定義。

當您在解決方案中定義應用程式時,您的測試會跨環境可攜式。 設定 appLogicalName 屬性以指出應用程式是以解決方案為基礎。

若要尋找應用程式的邏輯名稱:

  1. 在 Power Apps 中開啟包含您應用程式的解決方案
  2. 使用清單中的 名稱 (而非 顯示名稱)。 名稱值包含解決方案發行者的自訂前置詞。

獨立應用程式

當您的應用程式未在解決方案中定義時,您必須使用 屬性 appId

若要尋找應用程式的 ID:

  1. 在 Power Apps 清單中找到應用程式
  2. 開啟 [詳細資料] 並記下應用程式識別碼 GUID

NetworkRequest模擬

房產 類型 Description
requestURL 字串 必須的。 取得模擬回應的要求 URL。 接受 Glob 模式
responseDataFile 字串 必須的。 具有模擬回應內容的文字檔。 此檔案中的所有文字都會讀取為回應
headers 陣列 選擇性。 請求中的標頭欄位清單,格式為 [fieldName: fieldValue]
method 字串 選擇性。 請求的方法(GET、POST 等)
requestBodyFile 字串 選擇性。 具有要求內文的文字檔。 此檔案中的所有文字都會讀取為要求內文

對於選用內容,如果未指定任何值,則路由會套用至所有內容。 例如,如果為 null,只要 method 其他屬性都匹配,無論方法是什麼,我們都會傳回模擬回應。

對於 Sharepoint/Dataverse/Connector 應用程式, requestURL 並且 method 所有要求都可以相同。 x-ms-request-method 在這種情況下 x-ms-request-url ,可能需要配置標頭來識別不同的請求。

測試案例

房產 類型 Description
testCaseName 字串 必須的。 用來報告成功和失敗的測試案例名稱
testSteps 測試步驟 必須的。 一組 Power Fx 函數,說明執行測試案例所需的步驟。 請參閱 TestSteps 範例
testCaseDescription 選擇性。 其他資訊說明測試案例的動作

測試步驟

  • TestSteps 可以使用任何現有 的測試引擎 Power Fx 函數 函數或此架構定義 的特定測試函數
  • 值應該以管道符號 (|) 開頭,以允許多行 YAML 運算式,後面接著等號 (=) ,以指出它是 Power Fx 運算式
  • 函式應以分號 (); 分隔。
  • 可以使用註解,且應以雙反斜線字元 ()// 開頭。

TestSteps 範例

testCases:
   - testCaseName: Fill in a city name and do the search
   testSteps: |
      = Screenshot("connectorapp_loaded.png");
         SetProperty(TextInput1.Text, "Atlanta");
         Select(Button1);
         Assert(Label4.Text = "You are seeing the mock response", "Validate the output is from the mock");
         Screenshot("connectorapp_end.png");

測試設定

用來定義測試計劃中測試的設定。

房產 類型 Description
browserConfigurations 瀏覽器配置[] 必須的。 要測試的瀏覽器組態清單。 必須至少指定一個瀏覽器。
extensionModules 擴充模組 選擇性。 包含要啟用的延伸模組的相關資料。
filePath 字串 選擇性。 具有所有測試設定的個別 yaml 檔案的檔案路徑。 如果提供,它會 覆寫 測試計劃中的所有測試設定。
headless 布爾值 選擇性。 預設值是「true」。 如果設定為 false,瀏覽器會在測試執行期間顯示。
locale 字串 選擇性。 寫入測試案例或測試步驟的地區設定/文化特性語法。 如果未指定, CultureInfo.CurrentCulture 則預設會用於語言環境,以剖分析測試步驟。 請參閱 區域和語言考量
recordVideo 布爾值 選擇性。 預設值為 false。 如果設定為 true,則會擷取測試的視訊錄製。
timeout 整數 選擇性。 逾時值 (以毫秒為單位)。 預設值為 30,000 毫秒 (30 秒)。 如果任何作業花費的時間超過逾時限制,則會以失敗結束測試。
powerFxTestTypes name value 選擇性。 類型名稱和 Power Fx 類型定義的清單。 請參閱 powerFxTestTypes 範例
testFunctions description code 選擇性。 說明和 Power Fx 函數定義的清單。 請參閱 testFunctions 範例

擴充模組

包含要啟用的延伸模組的相關資料。

房產 類型 Description
enable 布爾 (bool) 是否啟用擴充模組。
allowPowerFxNamespaces list 要啟用的 PowerFx 命名空間清單。
parameters 索引鍵值組 具有值的屬性,可控制擴充模組。 目前,只有布林參數 enableDataverseFunctions 對此有效。

此範例示範如何啟用 PowerFx Preview 命名空間:

testSettings:
  extensionModules:
    enable: true
    allowPowerFxNamespaces:
    - Preview

進一步了解預覽功能

地區和語言考量

測試引擎支援各種語言和區域設定,例如小數點和清單分隔符號。 testSettings.locale屬性會控制這些行為。 如需詳細資訊,請參閱 Microsoft Power Fx 中的全域支援

請查看 PowerApps-TestEngine GitHub 存放庫上的這些範例設定:

powerFxTestTypes 範例

powerFxTestTypes:
 - name: ControlName
   value: |
      {ControlName: Text} 
 - name: Options
   value: |
      [{Name: Text, Value: Number}]   

此範例示範如何定義自訂 Power Fx 類型以用於測試案例。 ControlName類型定義為具有單一Text欄位的記錄,而Options類型定義為記錄表格,每個記錄包含類型的Name欄位Text和類型的ValueNumber欄位。 自訂類型可用於建立更複雜和具體的測試場景,從而增強測試定義的靈活性和功能。

testFunctions 範例

testFunctions:
 - description: Wait until control is visible using Document Object Model (DOM) selector
   code: |
    WaitUntilVisible(control: Text): Void = 
      Preview.PlaywrightAction(Concatenate("//div[@data-id='", control, "']"), "wait");
 - description: Get the options for a control using Power Fx control from Model Driven App (MDA)
   code: |
    GetOptions(control: ControlName): Options =
      Preview.GetOptions(control);

這些測試函數範例示範如何定義自訂 Power Fx 函數以用於測試案例。 函 WaitUntilVisible 式會使用 DOM 選取器,使用 Playwright 動作,等候指定的控制項可見為止。 GetOptions 函式會利用 Power Fx 控制項,從 模型導向應用程式 (MDA) 擷取指定控制項的選項。 這些自訂函數增強了測試定義的靈活性和功能,允許更複雜和具體的測試場景。

瀏覽器配置

每個 testSettings 至少需要一個 BrowserConfiguration.

房產 類型 Description
browser 字串 必須的。 測試時要啟動的瀏覽器。 應符合 Playwright 支援的瀏覽器
device 字串 選擇性。 啟動瀏覽器時要模擬的裝置。 應與 Playwright 支援的裝置相符
screenHeight 整數 選擇性。 啟動瀏覽器時要使用的螢幕高度。 如果指定, screenWidth 也必須指定。
screenWidth 整數 選擇性。 啟動瀏覽器時要使用的螢幕寬度。 如果指定, screenHeight 也必須指定。

environmentVariables

您可以將不同類型的值儲存為環境值,但最常見的情況是將認證資訊與 使用者清單一起儲存。

users

為了確保以安全的方式儲存認證,測試定義會使用 personaName. 不支援將認證儲存在測試計劃檔案中。

範例:

environmentVariables:
    - users:
        - personaName: "User1"
          emailKey: "user1Email"
        - personaName: "User2"
          emailKey: "user2Email"

用作 personaName 測試定義的一部分,以指示要以哪個使用者身分執行測試。

支援的認證儲存機制

若要將認證儲存為環境變數,您可以依下列方式設定認證:

# In PowerShell - replace variableName and variableValue with the correct values
$env:variableName = "variableValue"

在 YAML 中,需要定義兩個屬性,以指出此使用者的認證儲存在環境變數中:

  • emailKey:用來儲存使用者電子郵件的環境變數。

範例 YAML:

    - personaName: "User1"
      emailKey: "user1Email"

根據 YAML 設定使用者認證的範例 PowerShell:

$env:user1Email = "someone@example.com"

另請參閱

Power Apps 測試引擎概觀 (預覽)
Power Apps 測試引擎 Power Fx 函數 (預覽版)