【问题标题】:How to Automate test automation framework with Azure Test Plan in azuredevops如何在 azure devops 中使用 Azure 测试计划自动化测试自动化框架
【发布时间】:2022-12-20 14:06:10
【问题描述】:

我们正在尝试使用 azuredevops 任务自动化测试自动化框架与 Azure 测试计划的集成,如 article 中所述。

我尝试第一步从“planName”的参数值中获取一个 testplanid,但它没有给出任何输出。是因为它没有通过 accesstoken 吗?

parameters:
- name: planName
  type: string

stages:
- stage: get_TestplanID
  pool:
    name: myspoke
  jobs:
  - job: Get_TestPlanID
    steps:
    - script: |
        echo ${AZURE_DEVOPS_CLI_PAT} | az devops login
      env:
        AZURE_DEVOPS_CLI_PAT: $(System.AccessToken)
      displayName: 'Login to Azure DevOps'
    - bash: |
        TestPlan_ID=$(curl --location --request GET 'https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/plans/planID/suites?api-version=5.0' --header 'Authorization: Basic ${AZURE_DEVOPS_CLI_PAT}' | jq ".value[] | select(.name==\"${{ parameters.planName }}\")" | jq .id)
        echo "TestPlanId is $TestPlan_ID"

我在这里的要求是,一旦我可以导出 testplanID 的值,就需要将该变量传递给下一步,这也应该是进一步的 azuredevops 任务,如下所示。

  1. 获取测试套件 ID

端点: https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/plans/planID/suites?api-version=5.0 方法 : 得到 获取测试套件 ID 的 JsonPath: $.value.[?(@.name == 'yourSuiteName')].id planID - 可从步骤 1 获得

  1. 获取测试用例 ID

端点: https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/plans/planID/suites/suiteID/points?api-version=5.0 方法 : 得到 JsonPath 获取测试用例 ID: $..[?(@.name == 'yourTestCaseName')].id planID - 可从步骤 1 获得 suiteID - 可从步骤 2 获得

  1. 获取测试点 ID

端点: https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/plans/planID/suites/suiteID/points?testCaseId=tcID&api-version=5.0 方法 : 得到 获取测试点 ID 的 JsonPath: $.value.[0].id planID - 可从步骤 1 获得 suiteID - 可从步骤 2 获得 tcID-可从步骤 3 获得

  1. 创建测试运行

端点: https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/runs?api-version=5.0 方法 : 邮政 内容类型 : 应用程序/json 样本有效载荷: {"name":"runName","plan":{"id":planID},"pointIds":[pointID]} 获取测试运行 ID 的 JsonPath: $.id planID - 可从步骤 1 获得 pointID - 可从第 4 步获得

  1. 获取测试结果 ID

端点: https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/runs/runID/results?api-version=6.0-preview.6 方法 : 得到 获取测试结果 ID 的 JsonPath: $.value.[0].id runID - 可从第 5 步获得

  1. 创建错误(可选步骤)

端点: https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/wit/workitems/$bug?api-version=5.0 方法 : 邮政 内容类型 : 应用程序/json补丁+json 样本有效载荷: [{“op”:“add”,“path”:“/fields/System.Title”,“from”:null,“value”:“titleOfBug”}] 获取 Bug ID 的 JsonPath: $.id 8. 在测试运行中更新结果

端点: https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/runs/runID/results?api-version=6.0-preview.6 方法 : 修补 内容类型 : 应用程序/json 如果通过,则示例有效负载: [{ "id": resultID , "outcome": "PASSED" , "state": "Completed", "comment": "执行成功" }] 失败时的示例负载: [{ "id": resultID, "outcome": "FAILED" , "state": "Completed", "comment": "执行失败", "associatedBugs": [{"id":bugID}]}]

【问题讨论】:

    标签: azure-devops azure-pipelines azure-devops-rest-api azure-devops-extensions azure-devops-server-2019


    【解决方案1】:

    检查您的第一份工作以获得 testplanid,输出为空的原因是环境变量未传递给 bash 脚本任务。与普通变量不同,秘密变量不会自动解密为脚本的环境变量。您需要显式映射秘密变量。这是doc

    修改您的脚本如下:

    stages:
    - stage: get_TestplanID
      pool:
        name: myspoke
      jobs:
      - job: Get_TestPlanID
        steps:
        - script: |
            echo ${AZURE_DEVOPS_CLI_PAT} | az devops login
          env:
            AZURE_DEVOPS_CLI_PAT: $(System.AccessToken)
          displayName: 'Login to Azure DevOps'
        - bash: |
            TestPlan_ID=$(curl --location --request GET 'https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/plans/planID/suites?api-version=5.0' --header 'Authorization: Basic ${AZURE_DEVOPS_CLI_PAT}' | jq ".value[] | select(.name=="${{ parameters.planName }}")" | jq .id)
            echo "TestPlanId is $TestPlan_ID"
          env:
           AAZURE_DEVOPS_CLI_PAT: $(AZURE_DEVOPS_CLI_PAT) # the recommended way to map to an env variable
    

    我的要求是,一旦我可以导出价值 testplanID,需要将该变量传递给下一步应该 还可以执行以下 azuredevops 任务。

    如果你想在同一个作业中传递变量,你需要在上一个任务中定义变量,并在下一个任务中使用它。参考这个doc

    这是一个示例:

    stages:
    - stage: get_TestplanID
    
      jobs:
      - job: createvar
        steps:
        - task: PowerShell@2
          inputs:
            targetType: 'inline'
            script: |
              Write-Host "##vso[task.setvariable variable=testplanID;]123"
        
        - powershell: echo $(testplanID)
    

    【讨论】:

      猜你喜欢
      • 2019-10-19
      • 2021-03-11
      • 1970-01-01
      • 2021-07-07
      • 2021-12-29
      • 2021-10-02
      • 2012-02-25
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多