Azure AI Search性能测试工具报错:results.jtl文件缺失求助
Azure AI Search性能测试流水线问题:JMeter结果文件找不到
问题描述
我是Terraform新手,正在开展Azure AI Search性能测试工作,使用GitHub仓库azure-search-performance-testing中的load-test.yml创建流水线时遇到问题:在将JMeter测试结果转换为JUnit格式的步骤中,系统提示找不到文件/home/vsts/work/1/s/results/results.jtl。已配置AzureCLI任务从存储账户下载测试产物,但转换脚本仍报错文件缺失,恳请协助排查解决。
报错信息
> Generating script. ========================== Starting Command Output =========================== /usr/bin/bash --noprofile --norc /home/vsts/work/_temp/bb347353-e24e-4854-b090-f7bda3b155ae.sh Converting... Traceback (most recent call last): File "/home/vsts/work/1/s/terraform/../scripts/jtl_junit_converter.py", line 179, in main() File "/home/vsts/work/1/s/terraform/../scripts/jtl_junit_converter.py", line 173, in main test_suites = create_test_suites(sys.argv[1]) File "/home/vsts/work/1/s/terraform/../scripts/jtl_junit_converter.py", line 164, in create_test_suites junit_results = create_junit_results(jtl_results_filename) File "/home/vsts/work/1/s/terraform/../scripts/jtl_junit_converter.py", line 106, in create_junit_results with open(jtl_results_filename) as jmeter_file: FileNotFoundError: [Errno 2] No such file or directory: '/home/vsts/work/1/s/results/results.jtl' [error]Bash exited with code '1'. Finishing: RESULTS: Convert JMeter Results to JUnit Format
相关代码
AzureCLI下载任务
- task: AzureCLI@2 displayName: 'RESULTS: Download Jmeter results' inputs: azureSubscription: $(AZURE_SERVICE_CONNECTION_NAME) scriptType: 'bash' workingDirectory: ./terraform scriptLocation: 'inlineScript' inlineScript: | RG=$(terraform output resource_group_name) SHARENAME=$(terraform output storage_file_share_name) STGKEY=$(terraform output storage_account_key) ACCOUNTNAME=$(terraform output storage_account_name) mkdir $(System.DefaultWorkingDirectory)/results az storage file download-batch --account-key $STGKEY --account-name $ACCOUNTNAME --destination $(JMETER_DIRECTORY_OUTPUT) --no-progress --source $SHARENAME
结果转换与发布任务
- script: | JMETER_RESULTS=$(JMETER_DIRECTORY_OUTPUT)/$(terraform output jmeter_results_file) JUNIT_RESULTS=$(JMETER_DIRECTORY_OUTPUT)/output.xml python3 ../scripts/jtl_junit_converter.py $JMETER_RESULTS $JUNIT_RESULTS workingDirectory: ./terraform displayName: 'RESULTS: Convert JMeter Results to JUnit Format' - task: PublishTestResults@2 inputs: testResultsFormat: 'JUnit' testResultsFiles: '$(JMETER_DIRECTORY_OUTPUT)/output.xml' failTaskOnFailedTests: false displayName: 'RESULTS: Publish Load Testing Results'
排查建议
- 校验
JMETER_DIRECTORY_OUTPUT变量值:确认该变量是否指向$(System.DefaultWorkingDirectory)/results——下载任务创建了这个目录,但如果变量路径不匹配,文件会被下载到错误位置。可以在AzureCLI任务中添加echo "JMETER_DIRECTORY_OUTPUT value: $(JMETER_DIRECTORY_OUTPUT)"查看实际值。 - 检查下载文件的实际位置:在AzureCLI任务的inlineScript末尾添加
ls -la $(JMETER_DIRECTORY_OUTPUT),确认results.jtl是否存在,或是被下载到了子目录中(az storage file download-batch会保留存储共享中的目录结构)。 - 验证Terraform输出的
jmeter_results_file:在转换任务中添加echo "Jmeter results file: $(terraform output jmeter_results_file)",确认输出的文件名是不是results.jtl,有没有拼写错误或多余路径前缀。 - 确认目录创建结果:在AzureCLI任务中添加
ls -la $(System.DefaultWorkingDirectory),检查results目录是否成功创建。 - 改用绝对路径避免混淆:转换任务中,将
JMETER_RESULTS改为绝对路径,比如JMETER_RESULTS=$(System.DefaultWorkingDirectory)/results/$(terraform output jmeter_results_file),避免相对路径带来的问题。
内容的提问来源于stack exchange,提问作者aalimsha
相关产品推荐
相关产品推荐

