通过


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 扩展测试功能都需要使用 预览功能。 要启用这些功能,请在 extensionModules 列表中添加 PreviewallowPowerFxNamespaces

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 作为 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)