如何修复YAML中覆盖MSTEST测试运行参数的语法错误?
报错原因
出现的Line: 35, Col: 1): While parsing a block mapping, did not find expected key错误,源于YAML语法结构错误,同时存在变量拼写、引用错误等问题,具体修复点如下:
修复步骤
修正YAML层级结构
steps不能直接与stages同级,需将其放入某个stage的jobs下。原代码中- steps:的写法破坏了YAML层级,导致解析失败。此处新增一个执行测试的stage,将测试任务放入其中。修正变量拼写
参数vriable2拼写错误,改为variable2。修复模板参数语法
tagName: ${{ parameters.dockerImageTagName }缺少闭合的}},改为tagName: ${{ parameters.dockerImageTagName }}(若该参数未定义,需先在parameters块中添加,或直接删除该行)。修正测试参数引用
overrideTestrunParameters中的变量引用存在错误:$( Date1)有多余空格,且实际参数名为variable1,应改为$(variable1)$( Date2)同理,改为$(variable2)
修正资源库名称
资源库name: Autotesting/ Autotesting中的空格去掉,改为Autotesting/Autotesting。
完整修正代码
parameters: - name: environmentName default: Test values: - Dev - Test - name: variable1 type: string default: 2024-06-04 displayName: Date1 - name: variable2 type: string default: 2024-07-01 displayName: Date2 # 若使用dockerImageTagName需定义,否则删除 - name: dockerImageTagName type: string default: "latest" - name: runsettingsFileName type: string default: "test.runsettings" - name: testFilter type: string default: "" trigger: none pr: none resources: repositories: - repository: auto type: git name: Autotesting/Autotesting stages: - template: PipelineTemplates\@auto parameters: techArea: Automation buildPipelineName: Automation testsType: Apis runSettings: remote environmentName: ${{ parameters.environmentName }} tagName: ${{ parameters.dockerImageTagName }} runsettingsFileName: ${{ parameters.runsettingsFileName }} testFilter: ${{ parameters.testFilter }} - stage: RunMSTests jobs: - job: ExecuteTests steps: - task: VSTest@2 inputs: overrideTestrunParameters: | - Date1 $(variable1) - Date2 $(variable2)
实现说明
修正后的YAML确保了层级结构正确,将测试任务放入独立stage中避免解析错误。通过overrideTestrunParameters将流水线参数variable1、variable2的值传递给MSTest的Date1、Date2测试运行参数,满足覆盖需求。若模板中部分参数未实际使用,可直接删除对应行。
内容的提问来源于stack exchange,提问作者anonymous

