Azure DevOps 管道 - 如何捕获错误
Azure DevOps pipeline - how to catch error
我正在使用 Azure DevOps 构建管道,运行 我的 selenium Web 自动化测试(运行 通过 Maven,在 docker 容器内)
- 现在,即使我的测试场景之一失败了,管道作业仍然被认为是成功的,我如何指定寻找特定的日志来失败呢?
我正在使用的 'pipeline job/task/phase' 运行 我的测试是 'docker compose'
- 我的第二个问题是,是否可以过滤管道输出日志?目前它充斥着容器中少数服务 运行 的输出:
我唯一发现的是,可以搜索日志,但没有过滤,问候。
如果您的 objective 在您的多个测试失败时导致构建失败,我建议您在构建过程中再添加一个步骤:Publish Test Results task
这是测试 运行 与默认 Visual Studio Test 任务不同的另一项任务的必要步骤,后者包括将测试结果文件发布到 Azure DevOps,并使您的构建能够了解您的测试结果(然后让您决定如果一项或多项测试失败该怎么办)
在您的情况下,您可能还必须找到一种方法来从您的容器中提取测试结果文件,因为您的测试结果可能会在您的容器中生成并存储(并且 Publish Test Result task
)
关于你的第二个问题,我不知道有什么方法可以直接从网络界面过滤输出日志,抱歉:(
我们 运行 通过我们的 cypress 测试对此进行了研究(你应该放弃 selenium 来使用 cypress,它很可爱)并通过手动获取退出代码解决了这个问题。我们还发现,如果有后台进程 运行,即使出现错误,AzureDevops 也会挂起,因此如果您像我们一样启动 Web 服务器,也一定要注意这一点。
- bash: |
yarn test-ci:e2e 2> /dev/null
if [ $? -eq 0 ]
then
yarn stop
exit 0
else
yarn stop
exit 1
fi
displayName: 'Run Cypress Tests'
对于任何寻找过滤日志方法的人来说,如果有多个服务 运行,您可以创建运行 docker 命令的新 azure 构建管道任务 (Docker):
docker logs -f NAME_OF_THE_SERVICE
这样您将只会看到来自所需服务的日志。
我正在使用 Azure DevOps 构建管道,运行 我的 selenium Web 自动化测试(运行 通过 Maven,在 docker 容器内)
- 现在,即使我的测试场景之一失败了,管道作业仍然被认为是成功的,我如何指定寻找特定的日志来失败呢?
我正在使用的 'pipeline job/task/phase' 运行 我的测试是 'docker compose'
- 我的第二个问题是,是否可以过滤管道输出日志?目前它充斥着容器中少数服务 运行 的输出:
我唯一发现的是,可以搜索日志,但没有过滤,问候。
如果您的 objective 在您的多个测试失败时导致构建失败,我建议您在构建过程中再添加一个步骤:Publish Test Results task
这是测试 运行 与默认 Visual Studio Test 任务不同的另一项任务的必要步骤,后者包括将测试结果文件发布到 Azure DevOps,并使您的构建能够了解您的测试结果(然后让您决定如果一项或多项测试失败该怎么办)
在您的情况下,您可能还必须找到一种方法来从您的容器中提取测试结果文件,因为您的测试结果可能会在您的容器中生成并存储(并且 Publish Test Result task
)
关于你的第二个问题,我不知道有什么方法可以直接从网络界面过滤输出日志,抱歉:(
我们 运行 通过我们的 cypress 测试对此进行了研究(你应该放弃 selenium 来使用 cypress,它很可爱)并通过手动获取退出代码解决了这个问题。我们还发现,如果有后台进程 运行,即使出现错误,AzureDevops 也会挂起,因此如果您像我们一样启动 Web 服务器,也一定要注意这一点。
- bash: |
yarn test-ci:e2e 2> /dev/null
if [ $? -eq 0 ]
then
yarn stop
exit 0
else
yarn stop
exit 1
fi
displayName: 'Run Cypress Tests'
对于任何寻找过滤日志方法的人来说,如果有多个服务 运行,您可以创建运行 docker 命令的新 azure 构建管道任务 (Docker):
docker logs -f NAME_OF_THE_SERVICE
这样您将只会看到来自所需服务的日志。