備註
預覽功能不供生產時使用,而且可能功能受限。 這些功能可在正式發行之前提供,讓客戶可以取得早期存取並提供意見反應。
測試是在 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 屬性以指出應用程式是以解決方案為基礎。
若要尋找應用程式的邏輯名稱:
- 在 Power Apps 中開啟包含您應用程式的解決方案
- 使用清單中的 名稱 (而非 顯示名稱)。 名稱值包含解決方案發行者的自訂前置詞。
獨立應用程式
當您的應用程式未在解決方案中定義時,您必須使用 屬性 appId 。
若要尋找應用程式的 ID:
- 在 Power Apps 清單中找到應用程式
- 開啟 [詳細資料] 並記下應用程式識別碼 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"