Поделиться через


Формат YAML подсистемы тестирования Power Apps (предварительная версия)

Замечание

Предварительные версии функций не предназначены для использования в производственной среде, а их функциональность может быть ограничена. Эти функции доступны до официального выпуска, чтобы клиенты могли получать ранний доступ и предоставлять отзывы.

Тесты определяются в YAML, следуя тем же рекомендациям, что и Power Fx. Узнайте больше о грамматике формулы Power Fx YAML.

Дополнительные примеры см. в папке PowerApps-TestEngine/samples .

Определения схемы YAML

Недвижимость Description
testSuite Определяет один набор тестов, тестовые варианты в наборе тестов и конфигурации, относящиеся к набору тестов.
testSettings Определяет параметры набора тестов, которые повторно используются в нескольких тестовых случаях.
environmentVariables Определяет переменные, которые могут измениться при переносе приложения в разных средах.

testSuite

Используется для определения одного теста.

Недвижимость Тип Description
persona струна Обязательное. Пользователь, вошедший в систему для выполнения теста. Должен соответствовать человеку, указанному в разделе "Пользователи ".
testCases TestCases Обязательное. Определяет тестовые случаи в наборе тестов. Тестовые случаи, содержащиеся в наборах тестов, выполняются последовательно. Состояние приложения сохраняется во всех тестовых случаях в наборе.
testSuiteName струна Обязательное. Имя набора тестов.
appLogicalName струна Необязательно. Логическое имя запускаемого приложения. Его можно получить из решения. Для приложений на основе холста необходимо добавить его в решение, чтобы получить его. Узнайте , как определить приложение в тестовом плане
appId Гид Необязательно. Идентификатор запускаемого приложения. Обязательный и используемый только в том случае, если appLogicalName он отсутствует. Идентификатор приложения следует использовать только для приложений холста, которые не в решении. Узнайте , как определить приложение в тестовом плане
networkRequestMocks NetworkRequestMocks Необязательно. Определяет макеты сетевых запросов, необходимые для теста.
onTestCaseComplete струна Необязательно. Определяет шаги, которые необходимо активировать для каждого тестового случая в наборе после завершения выполнения дела.
onTestCaseStart струна Необязательно. Определяет шаги, которые необходимо активировать для каждого тестового случая в наборе перед началом выполнения дела.
onTestSuiteComplete струна Необязательно. Определяет шаги, которые необходимо активировать после завершения выполнения набора.
testSuiteDescription струна Необязательно. Дополнительные сведения о том, что делает набор тестов.

Определение приложения в тестовом плане

Вам нужно задать или appLogicalNameappId определить приложение. Используемое приложение зависит от того, определено ли приложение в решении.

При определении приложений в решениях тесты остаются переносимыми в разных средах. appLogicalName Задайте свойство, указывающее, что приложение основано на решении.

Чтобы найти логическое имя приложения, выполните следующие действия.

  1. Откройте решение, содержащее приложение в Power Apps
  2. Используйте имя (не отображаемое имя) в списке. Значение имени включает префикс настройки для издателя решения.

Автономные приложения

Если приложение не определено в решении, необходимо использовать appId это свойство.

Чтобы найти идентификатор приложения, выполните следующие действия.

  1. Поиск приложения в списке Power Apps
  2. Откройте сведения и запишите GUID идентификатора приложения

NetworkRequestMocks

Недвижимость Тип Description
requestURL струна Обязательное. URL-адрес запроса, который получает макет ответа. Шаблоны glob принимаются
responseDataFile струна Обязательное. Текстовый файл с содержимым ответа макета. Весь текст в этом файле считывается как ответ
headers массив Необязательно. Список полей заголовка в запросе в формате [fieldName: fieldValue]
method струна Необязательно. Метод запроса (GET, POST и т. д.)
requestBodyFile струна Необязательно. Текстовый файл с текстом запроса. Весь текст в этом файле считывается как текст запроса

Для необязательных свойств, если значение не указано, маршрутизация применяется ко всем. Например, если method значение NULL, мы отправим обратный ответ макета независимо от того, какой метод соответствует другим свойствам.

Для приложений Sharepoint/Dataverse/Connector и requestURLmethod может быть одинаковым для всех запросов. x-ms-request-method и x-ms-request-url в заголовках может потребоваться настроить в этом случае для идентификации различных запросов.

TestCases

Недвижимость Тип Description
testCaseName струна Обязательное. Имя тестового случая, используемого в отчетах об успешном выполнении и сбое
testSteps TestSteps Обязательное. Набор функций Power Fx, описывающих шаги, необходимые для выполнения тестового случая. См . пример TestSteps
testCaseDescription нет Необязательно. Дополнительные сведения о том, что делает тестовый случай

TestSteps

  • 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");

testSettings

Используется для определения параметров для тестов в плане тестирования.

Недвижимость Тип Description
browserConfigurations BrowserConfiguration[] Обязательное. Список конфигураций браузера для тестирования. Необходимо указать хотя бы один браузер.
extensionModules extensionModules Необязательно. Содержит данные о расширениях для включения.
filePath струна Необязательно. Путь к отдельному файлу yaml со всеми параметрами теста. При условии он переопределит все параметры теста в плане тестирования.
headless булевый Необязательно. Значение по умолчанию — истинно. Если задано значение false, браузер отображается во время выполнения теста.
locale струна Необязательно. Синтаксис языкового стандарта или языка и региональных параметров, в котором записываются тестовые варианты или этапы тестирования. Если не указано, CultureInfo.CurrentCulture используется для языкового стандарта по умолчанию для синтаксического анализа тестовых шагов. Ознакомьтесь с рекомендациями по регионам и языкам
recordVideo булевый Необязательно. По умолчанию — false. Если задано значение true, запись видео теста записывается.
timeout целое число Необязательно. Значение времени ожидания в миллисекундах. По умолчанию используется 30 000 миллисекунда (30-х). Если любая операция занимает больше времени ожидания, она завершает тест сбоем.
powerFxTestTypes name value пара Необязательно. Список определений типов и типов Power Fx. Пример powerFxTestTypes
testFunctions description code пара Необязательно. Список определений функций Power Fx и описания. См . пример testFunctions

extensionModules

Содержит данные о расширениях для включения.

Недвижимость Тип 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 и Value поле типа Number. Пользовательские типы можно использовать для создания более сложных и конкретных сценариев тестирования, повышения гибкости и возможностей определений тестов.

Пример 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 извлекает параметры указанного элемента управления из приложения на основе модели (MDA), используя элемент управления Power Fx. Эти пользовательские функции повышают гибкость и мощность определений тестов, позволяя более сложным и конкретным сценариям тестирования.

BrowserConfiguration

Для каждого 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"

Пример PowerShell для задания учетных данных пользователя на основе YAML:

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

См. также

Обзор подсистемы тестирования Power Apps (предварительная версия)
Функции Power Apps Test Engine Power Fx (предварительная версия)