Azure DevOps VSTest 任务 - appconfig 设置

标签 azure azure-devops azure-pipelines

这是一个关于如何使用静态值进行在 Azure DevOps Pipeline 上运行的 VSTest 单元测试的问题。

当我开发依赖于 Web API 的单元测试时,我将本地开发计算机上托管的 Web API 的 URL 放入 appsettings.json 中,效果非常好。但是,当单元测试在 Azure 管道上运行时,它当然无法访问我的计算机上托管的 Web API,并且失败。我可以更改 appsettings.json 文件以指向 Azure 上的 Web API,但我希望有一种方法可以在管道上运行单元测试时始终指向 Azure 上的 WebAPI,从而覆盖 appsettings.json 中的设置。有这样的办法吗?

对于 Azure 管道版本,我知道我可以使用 Azure 应用服务设置任务 ( https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-app-service-settings?view=azure-devops ) 设置应用服务的变量。不确定 VSTests 是否可以使用类似的功能。

最佳答案

您可以使用File Transform task将 appsettings.json 文件中的变量替换为管道变量。请参阅here了解更多信息

因此您可以在构建任务之前添加文件转换任务。然后在管道变量中定义一个变量(例如 TestData.Url)。 enter image description here

请参阅下面的 yaml 示例。

- task: FileTransform@1
  displayName: 'File Transform: '
  inputs:
    folderPath: '$(system.defaultworkingdirectory)'
    enableXmlTransform: false
    fileType: json
    targetFiles: '**/appsettings.json'

还有其他任务可以完成相同的工作。您可以查看任务Set Json Property ,和任务Magic Chunks

您还可以将 Web API 的 URL 放入 runsettings 文件的 TestRunParameters 部分或 testsettings 文件的 Properties 部分。并修改您的测试代码以从 testsettings/runsettings 文件获取 URL。然后,您可以使用 Vstest Task 的 overrideTestrunParameters 属性来覆盖 URL。请参阅Vstest task document了解更多信息。

关于Azure DevOps VSTest 任务 - appconfig 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62375500/

相关文章:

c# - 使用配置转换使用 MSI 部署的桌面应用程序在 VSTS 上构建/发布流程

angular - 部署到 Azure 后未定义 webpackJsonp

git - 从构建中标记 git 版本 - 在 git 中找不到标记

node.js - Azure Devops 管道在安装 Node js 时抛出错误

azure - 免费的 Azure AD 是否允许自行重置密码?

Azure Synapse - 在笔记本中导入 python 脚本

asp.net-core - Azure 应用服务上的 500.31 ANCM 故障排除

azure-devops - Azure DevOps - 在构建管道运行期间,Agent 在本地下载文件的路径是什么?

azure - 防止 Azure 中的 Blob 出现 'Change Tier'

azure - Microsoft Graph API 我无法访问我的日历 (ResourceNotFound)