如何在Azure Pipeline中生成Visual Studio测试日志并保存为工件
实现方案
1. 核心思路
通过配置流水线的测试任务生成Visual Studio原生的TRX格式详细日志(包含VS自动生成的执行信息和代码中Trace.WriteLine的输出),再将日志文件收集并发布为流水线工件,方便后续查看分析。
2. YAML流水线完整示例
steps: # 还原项目依赖(若流水线前期未执行此步骤) - task: DotNetCoreCLI@2 displayName: '还原NuGet依赖包' inputs: command: 'restore' projects: '**/*.csproj' # 编译测试项目 - task: DotNetCoreCLI@2 displayName: '编译自动化测试项目' inputs: command: 'build' projects: '**/*Test*.csproj' arguments: '--configuration Release' # 运行测试并生成详细日志 - task: VSTest@2 displayName: '执行UI自动化测试' inputs: testSelector: 'testAssemblies' testAssemblyVer2: | **/*Test*.dll !**/*TestAdapter.dll !**/obj/** searchFolder: '$(System.DefaultWorkingDirectory)' configuration: 'Release' # 指定生成TRX格式日志,包含详细执行信息和Trace输出 otherConsoleOptions: '/logger:"trx;LogFileName=TestResults/automation-tests-$(Build.BuildId).trx" /verbosity:detailed' # 可选:绑定Playwright配置文件,用于捕获失败截图、视频等 runSettingsFile: 'tests/Playwright.runsettings' # 复制测试日志到工件临时目录 - task: CopyFiles@2 displayName: '归集测试日志文件' inputs: SourceFolder: '$(System.DefaultWorkingDirectory)/TestResults' Contents: '*.trx' # 若有Playwright截图、视频或其他日志,可追加匹配规则:*.trx;*.png;*.webm;*.log TargetFolder: '$(Build.ArtifactStagingDirectory)/TestLogs' # 发布日志为流水线工件 - task: PublishPipelineArtifact@1 displayName: '发布测试日志工件' inputs: targetPath: '$(Build.ArtifactStagingDirectory)/TestLogs' artifact: 'UI-Automation-Test-Logs-$(Build.BuildId)' publishLocation: 'Container'
3. 关键配置说明
- VSTest任务参数:
/logger:"trx;LogFileName=...":指定生成TRX格式日志,这是VS原生测试结果格式,会自动包含测试执行步骤、断言结果、异常信息,以及代码中Trace.WriteLine的输出内容。/verbosity:detailed:将日志级别设为详细,确保VS自动生成的所有执行细节都被完整记录。
- Playwright可选配置:
若使用Playwright,可通过.runsettings文件配置失败时自动捕获截图、视频,以及开启详细日志,示例配置如下:<RunSettings> <Playwright> <Browser>chromium</Browser> <Headless>true</Headless> <ScreenshotOnFailure>true</ScreenshotOnFailure> <VideoOnFailure>true</VideoOnFailure> <LogLevel>verbose</LogLevel> </Playwright> </RunSettings> - 日志验证:
测试完成后,在流水线的「工件」页面下载TRX文件,直接用Visual Studio打开即可查看完整测试详情,Trace.WriteLine的输出会显示在测试结果的「输出」面板中。
内容的提问来源于stack exchange,提问作者Kev
相关产品推荐
相关产品推荐

