备注
预览功能不适合生产使用且功能可能受限。 这些功能在正式发布之前已经可用,以便客户可以抢先体验并提供反馈。
本指南提供了在测试引擎中设置身份验证的分步说明。 有关身份验证选项的快速概述,请参阅 测试引擎中的身份验证。
身份验证入门
测试引擎支持两种基于 Web 的画布测试和模型驱动应用程序的身份验证方法:
- StorageState - 用于单个开发的默认、轻松设置(用于基于 Web 的画布和模型驱动应用测试)
- Dataverse - 用于共享测试用户和 CI/CD 的基于团队的方法(用于基于 Web 的画布和模型驱动应用测试)
PowerFx 提供程序和直接 Dataverse 测试的身份验证处理方式不同。 这些测试使用命令直接从登录的 Azure CLI 会话获取访问令牌,以 az 获取资源访问令牌。 在运行这些类型的测试之前,请确保您已登录。 az login --allow-no-subscriptions
快速设置:StorageState 身份验证
StorageState 身份验证是最简单的入门方法。 它使用 Windows 数据保护 API 在本地计算机上安全地存储身份验证令牌。
步骤 1:使用默认身份验证运行测试
运行以下 PowerShell 命令,将开头的参数替换为。 your
pac test run `
--provider canvas `
--test-plan-file your-test-plan.yaml `
--tenant your-tenant-id `
--environment-id your-environment-id
备注
此示例中未使用 pac test run--user-auth 参数,因为默认提供程序是。 StorageState 如果您愿意,您可以将其包含在内。
步骤 2:完成交互式登录
输入测试用户帐户凭据
- 浏览器窗口自动打开
- 使用您的测试用户帐户登录
- 如果出现提示,请批准 MFA 和同意提示
- 出现提示时选择“保持登录状态”
您的身份验证现已保存。
- 测试引擎安全地存储您的身份验证
- 将来的测试运行使用保存的状态,无需登录
- 令牌在需要时自动刷新
团队设置: Dataverse 身份验证
Dataverse 身份验证非常适合团队和 CI/CD 管道。 它安全地存储经过身份验证的用户 Dataverse状态,并使用 X.509 证书进行加密。
步骤 1:下载并导入测试引擎解决方案
- 从以下位置 Power Platform 下载 https://aka.ms/TestEngineAuth解决方案。
- 登录到 Power Apps。
- 选择目标环境。
- 转到 解决方案并选择 导入解决方案 。
- 按照向导上传并安装测试引擎解决方案。
步骤 2:创建用于加密的证书
对于自签名证书(仅限开发),请运行以下 PowerShell 脚本:
$Params = @{
DnsName = @("testengine", "testengine")
CertStoreLocation = "Cert:\CurrentUser\My"
NotAfter = (Get-Date).AddMonths(6)
KeyAlgorithm = "RSA"
KeyLength = 2048
}
New-SelfSignedCertificate @Params
对于生产,请使用企业证书颁发机构提供的证书。
第 3 步:设置测试用户
完成以下步骤以设置测试用户:
打开终端并注销任何现有会话:
# Clear Power Platform CLI credentials pac auth clear # Clear Azure CLI credentials az logout使用 Azure CLI 登录(身份验证所需 Dataverse ):
az login --allow-no-subscriptions将证书名称 设置为名为 PowerShell 的环境变量
DataProtectionCertificateName:$env:DataProtectionCertificateName = "CN=testengine"使用身份验证运行 Dataverse 测试:
pac test run ` --provider canvas ` --user-auth Dataverse ` --auth Certstore ` --test-plan-file testplan.yaml ` --tenant your-tenant-id ` --environment-id your-environment-id备注
与 StorageState 不同,在这种情况下,您必须使用
--user-auth值为的Dataverse参数。出现提示时完成交互式登录。
设置服务主体(适用于 CI/CD)
对于 CI/CD 管道中的自动化测试,可以使用服务主体而不是交互式用户帐户。
第 1 步:在 ID 中 Microsoft Entra 创建应用程序注册
完成以下步骤,在 ID 中 Microsoft Entra 创建应用程序注册。
- 登录到 Microsoft Entra 管理中心
- 导航到 应用程序应用程序注册>
- 选择“新建注册”
- 输入名称(例如“测试引擎自动化”)
- 保留默认选项并选择 “注册”
- 创建后,记下 应用程序(客户端)ID 和 目录(租户)ID
步骤 2:配置 API 权限 Dataverse
完成以下步骤以配置 API 权限 Dataverse。
- 在应用程序注册中,转到 API 权限
- 选择添加权限
- 选择 我的组织使用的 API
- 搜索并选择 Dataverse
- 选择“委派权限”
- 检查 user_impersonation
- 选择“添加权限”
- 选择 “授予管理员同意”
步骤 3:创建客户端密码
完成以下步骤以创建客户端密码。
- 转到 证书和机密
- 选择 “新建客户端密码”
- 添加描述并选择到期时间
- 立即复制机密 值 (无法再次看到它)
步骤 4:将应用程序用户添加到 Dataverse
完成以下步骤以将应用程序用户添加到。 Dataverse
- 打开 Power Platform 管理中心
- 选择环境
- 转到“设置” 用户 + 权限>应用程序>用户
- 选择 + 新 应用用户
- 搜索并选择您的应用程序
- 分配适当的业务部门和安全角色(包括“测试引擎用户”角色)
- 保存更改
步骤 5:配置 CI/CD 管道
将以下变量添加到管道中:
AZURE_CLIENT_ID: (your application ID)
AZURE_CLIENT_SECRET: (your client secret)
AZURE_TENANT_ID: (your tenant ID)
DataProtectionCertificateValue: (base64 encoded certificate)
ENVIRONMENT_URL: (your Dataverse environment URL)
对于 Azure DevOps,将它们安全地存储在具有适当权限的变量组 中 。
PowerFx 和直接 Dataverse 测试身份验证
对于 PowerFx 提供程序测试和直接 Dataverse 测试,身份验证的工作方式与基于 Web 的测试不同。
PowerFx/Dataverse 身份验证的工作原理
- 测试引擎使用 Azure CLI 获取特定于资源的访问令牌
- 令牌用于直接使用 API 进行 Dataverse 身份验证
- 不涉及浏览器或基于 Web 的身份验证
设置 PowerFx/Dataverse 身份验证
确保已安装 Azure CLI 并且是最新的:
winget install -e --id Microsoft.AzureCLI # Or update it if already installed az upgrade使用 Azure CLI 登录:
# The --allow-no-subscriptions flag is important as you may not have Azure subscriptions az login --allow-no-subscriptions使用 PowerFx 提供程序运行测试:
pac test run ` --provider powerfx ` --test-plan-file testplan.yaml ` --tenant your-tenant-id ` --environment-id your-environment-id ` --domain "https://your-environment.crm.dynamics.com"
身份验证故障排除
本节包含有关使用测试引擎进行身份验证故障排除的信息。
StorageState 的常见问题
问题:每次运行时都会出现身份验证提示。
- 解决方案:检查您是否选择了 登录期间保持登录 状态。
问题:
Cannot access secure storage错误。- 解决方案:确保您对用户配置文件文件夹具有适当的访问权限。
身份验证的 Dataverse 常见问题
问题:
Certificate not found错误。- 解决方案:验证证书名称是否与证书存储中的名称完全匹配。
问题:
Unable to connect to Dataverse错误。-
解决方案:检查 Azure CLI 是否登录时使用。
az login --allow-no-subscriptions
-
解决方案:检查 Azure CLI 是否登录时使用。
问题:
Access denied服务主体出错。- 解决方案:验证应用在正确的权限和适当的安全角色中 Dataverse 。
PowerFx/Dataverse 身份验证的常见问题
问题:
Unable to obtain access token错误-
解决方案:使用 Azure CLI 验证是否登录
az account get-access-token
-
解决方案:使用 Azure CLI 验证是否登录
问题:
Access denied到 Dataverse- 解决方案:确保登录用户在 Dataverse 环境中具有适当的权限
问题:长时间测试运行期间令牌过期
- 解决方案:使用令牌过期时间较长的服务主体,或在测试步骤中处理重新身份验证