【问题标题】:How to set Azure DevOps variable from Visual Studio Test task so the following inline PowerShell script can read it?如何从 Visual Studio 测试任务设置 Azure DevOps 变量,以便以下内联 PowerShell 脚本可以读取它?
【发布时间】:2020-02-09 05:03:01
【问题描述】:

我正在尝试在 Visual Studio 测试任务期间在发布管道中设置 Azure DevOps 变量。在 Visual Studio C# 测试代码中,我想根据测试是否通过来设置 ADO Release 变量。然后我将在下面的 Release 任务中读入这个变量,这是一个内联 Powershell 脚本,以执行单独的任务。

我尝试在我的 C# Visual Studio 测试代码中使用 Console.WriteLine("##vso[task.setvariable variable=<VARIABLE_NAME>;]<VALUE>"),但它没有设置变量。但是,当我使用内联 Powershell 脚本使用 Write-Host "##vso[task.setvariable variable=<VARIABLE_NAME>;]<VALUE>" 设置变量时,它可以正常工作。

是否可以在 Visual Studio 测试任务中使用 C# 设置 ADO Release 变量?还是只能使用 Batch/Powershell/Shell 脚本/任务设置变量?如果是这种情况,是否有人对如何执行此操作有任何建议?

【问题讨论】:

  • vstest 将控制台输出重定向到 trx 文件。这会导致语句无法到达代理日志流。代理需要最后一部分来更新变量。
  • @jessehouwing 是否可以强制语句到达代理日志而不被重定向到 TRX 文件?如果没有,还有其他方法可以从 VS 测试任务中设置 ADO 变量吗?
  • 这个问题有什么更新吗?你解决了这个问题吗?如果没有,请告诉我有关此问题的最新信息吗?
  • 我最终使用非 Azure ADO 方法来解决我的问题,因为日志记录命令不适用于 VSTest 任务。感谢您的帮助。

标签: c# powershell azure-devops


【解决方案1】:

如何从 Visual Studio 测试任务中设置 Azure DevOps 变量,以便以下内联 PowerShell 脚本可以读取它?

确实,就像 jessehouwing 说的:

vstest redirects the console output to the trx file.

所以,我们需要使用Logging Command 来调用日志记录命令。

要解决此问题,您可以尝试以下方法:

添加两个内联powershell任务,根据之前任务的结果设置一个ADO Release变量(包括VS测试任务):

然后添加另一个powershell任务来设置一个ADO Release变量,该变量基于之前所有任务成功的结果(包括VS测试任务)。

希望这会有所帮助。

【讨论】:

  • 感谢您的帮助!这是个好主意,但我不确定它是否适合我的情况。我的VSTest 任务运行多个测试(称为TestATestBTestC)。我的powershell script 具有功能(FuncAFuncBFuncC),如果它们在VSTest 任务中的各自测试通过(如果TestATestC 通过但TestB 失败)应该运行,只有FuncAFuncC 运行,而不是FuncB)。在您的建议中,powershell 脚本根据是否有任何 VSTest 测试通过或任何失败来运行。我需要一种更详细的方法,因此理想情况下从测试本身中设置变量
  • @aboublemc,你说“如果 TestA 和 TestC 通过但 TestB 失败,只有 FuncA 和 FuncC 运行,而不是 FuncB”,如果你只有这个指定的情况,或者这只是你的情况之一,你最终要根据不同的测试结果执行对应的Func任务吗?如果你只有这种指定的情况,我们仍然可以使用about方法,只需将任务TestATestC放在一起即可。
猜你喜欢
  • 1970-01-01
  • 2019-09-30
  • 2020-07-15
  • 2020-12-09
  • 2021-11-26
  • 2019-05-08
  • 1970-01-01
  • 2020-06-06
  • 1970-01-01
相关资源
最近更新 更多