在 Azure DevOps 测试运行任务中打印控制台输出

Printing the Console output in the Azure DevOps Test Run task

我正在使用 [BeforeTestRun] 钩子为我的 specflow 测试做一些初始的一次性设置。这确实会检查某些用户以确保它们是否存在,如果它们不存在,则使用特定的角色和权限创建它们,以便自动化测试可以使用它们。执行此操作的函数会在 Console.Writeline 上打印很多有用的信息。
当我在本地系统上运行测试时,我可以在主功能文件上看到这个钩子函数的输出,以及每个场景下每个场景的输出。但是当我通过 Azure DevOps 管道运行测试时,我不确定在哪里可以找到 [BeforeTestRun] 的输出,因为它没有绑定特定的测试场景。运行测试任务的控制台没有关于此的信息。

谁能帮我把这个输出显示在某个地方,这样我就可以采取相应的行动了。

我尝试使用 System.Diagnostics.Debug.PrintSystem.Diagnostics.Debug.PrintSystem.Diagnostics.Debug.WriteLineSystem.Diagnostics.Trace.WriteLine,但在管道控制台上似乎没有任何效果。

1
2
3
4
5
6
[BeforeTestRun]
public static void BeforeRun()
{
    Console.WriteLine(
       "Before Test run analyzing the users and their needed properties for performing automation run");
}

我希望我的输出在某处可见,以便在需要时根据该信息采取行动。


控制台日志是不可能的。

The product currently does not support printing console logs for passing tests and we do not currently have plans to support this in the near future.

(来源:https://developercommunity.visualstudio.com/content/problem/631082/printing-the-console-output-in-the-azure-devops-te.html)

但是,还有另一种方式:

您的构建将包含一个文件扩展名为 .trx 的附件。这是一个 xml 文件,包含每个测试的 Output 元素(另请参阅 https://stackoverflow.com/a/55452011):

1
2
3
4
5
6
7
8
9
10
<TestRun id="[omitted]" name="[omitted] 2020-01-10 17:59:35" runUser="[omitted]" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Times creation="2020-01-10T17:59:35.8919298+01:00" queuing="2020-01-10T17:59:35.8919298+01:00" start="2020-01-10T17:59:26.5626373+01:00" finish="2020-01-10T17:59:35.9209479+01:00" />
  <Results>
    <UnitTestResult testName="TestMethod1">
      <Output>
        <StdOut>Test</StdOut>
      </Output>
    </UnitTestResult>
  </Results>
</TestRun>

Build