Azure Pipeline中Playwright失败测试持续加载问题及解决咨询
Azure Pipeline测试失败后挂起的解决方法
问题根源
测试用例失败时,测试框架会启动本地HTTP服务用于展示HTML报告(输出提示Serving HTML report at http://localhost:9323. Press Ctrl+C to quit),但Azure Pipeline任务不会自动终止该服务,导致任务持续运行无法结束。
解决办法
1. 禁用报告自动启动HTTP服务
修改测试执行命令,添加参数阻止测试框架启动本地报告服务。以常用的pytest-html插件为例,添加--no-open参数:
pytest --html=test_report.html --no-open
不同测试框架的参数可能不同,可查阅对应框架文档找到禁用报告服务的参数。
2. 强制终止报告服务进程
如果无法禁用服务,可在测试命令后添加端口进程终止命令,杀掉占用9323端口的进程。根据Pipeline运行的操作系统选择对应命令:
- Windows环境:
- script: | pytest your_test_suite.py netstat -ano | findstr :9323 | for /f "tokens=5" %a in ('findstr :9323') do taskkill /f /pid %a displayName: 'Run tests and stop report server'
- Linux/macOS环境:
- script: | pytest your_test_suite.py lsof -ti:9323 | xargs kill -9 displayName: 'Run tests and stop report server'
3. 本地复现失败用例的方法
- 直接在本地执行与Pipeline完全相同的测试命令,确保本地安装的依赖包、Python版本与Pipeline环境一致
- 若环境差异导致无法复现,可使用Azure Pipeline的本地代理(
azpagent)在本地运行Pipeline任务,或者用Docker镜像复刻Pipeline的运行环境,保证执行环境完全匹配
YAML配置示例优化
假设你的原测试步骤如下,可修改为:
steps: - task: UsePythonVersion@0 inputs: versionSpec: '3.9' # 替换为你使用的Python版本 displayName: 'Set Python version' - script: | pip install -r requirements.txt pytest --html=test_report.html --no-open displayName: 'Install dependencies and execute tests'
内容的提问来源于stack exchange,提问作者Zeeshan ilyas
相关产品推荐
相关产品推荐

