Dataverse 使用测试引擎测试扩展(预览版)

备注

预览功能不适合生产使用且功能可能受限。 这些功能在正式发布之前已经可用,以便客户可以抢先体验并提供反馈。

本文介绍如何使用创建集成测试 Dataverse。 此功能应用 Power Fx 与表连接 Dataverse 的功能。

正在连接到 Dataverse

要启用 Dataverse 集成,请在 enableDataverseFunctions testSettings extensionModules 中添加 参数:

testSettings:
  extensionModules:
    enable: true
    parameters:
      enableDataverseFunctions: true

启用 Dataverse 集成时,需要使用对环境具有 Dataverse 权限的用户或服务主体打开 Azure CLI。 可以使用命令: az login 详细信息: 使用 Azure CLI 登录。

用于集成的 Dataverse API URL 是从 pac test run 参数的--domain 主机域名中获取的,也可以通过定义 名为的 PowerShell 环境变量 DATAVERSE_URL获取的。

启用预览

目前,所有 Dataverse 扩展测试功能都需要使用 预览功能。 要启用这些,请添加到 PreviewallowPowerFxNamespaces extensionModules 中的列表中。

testSettings:
  extensionModules:
    enable: true
    allowPowerFxNamespaces:
    - Preview
    parameters:
      enableDataverseFunctions: true

重置当前状态

在创作的测试 yaml 中定义 onTestCaseStart 事件处理程序,以便在每个测试用例之前执行常见作。 例如:

testSuite:
  testSuiteName: Dataverse tests
  testSuiteDescription: Validate Power Fx can be used to run Dataverse integration tests
  persona: User1
  appLogicalName: N/A
  onTestCaseStart: |
    = ForAll(Accounts, Remove(Accounts, ThisRecord))

在此示例中,用于 ForAll 循环访问表并对每条记录执行作。 然后,该 Remove 函数用于从表中删除每条记录,以确保在执行每个测试之前有一个空表。

感兴趣的功能

这些函数在处理以下作 Dataverse时非常有用:

  • 收集:将记录添加到表中。
  • CountRows:返回表中的记录数。
  • 第一条:返回表中的第一条记录。
  • ForAll:迭代表并对每条记录执行作。
  • 修补程序:更新现有记录。
  • 删除:从表中删除特定记录。

注意事项

在编写测试步骤时,请考虑以下注意事项:

  • 不支持默认值 。 因此 Power Fx ,不支持此类 Patch(Accounts, Defaults(Accounts), {name:"test"}) 示例。
  • 您可以使用 Collect alternative to Patch 与函数一起使用 Defaults

运行 Dataverse 测试

您可以使用提供程序( Power Fx )运行与之交互powerfx的测试,而无需 Dataverse 画布或模型驱动应用界面。 这对于测试业务逻辑、插件、流和其他后端服务非常有用。

pac test run `
   --provider powerfx `
   --test-plan-file your-testplan.te.yaml `
   --tenant your-tenantid-guid-value `
   --environment-id your-environmentid-guid-value `
   --domain "https://contoso.crm.dynamics.com"

人工智能集成

使用在 Power Apps 模式下编译的开源 测试引擎 Debug 以及适当的测试设置将在测试中启用 Preview.AIExecutePrompt 函数。

将以下内容添加到测试设置中以启用 AI 集成:

testSettings:
  extensionModules:
    enable: true
    parameters:
      enableDataverseFunctions: true
      enableAIFunctions: true

AI 函数的用法示例:

Assert("Paris" = Preview.AIExecutePrompt("Country Capital", { Country: "France" }).Text)