zoukankan      html  css  js  c++  java
  • PowerShell调用jira rest api实现jira统计自动化

    通过调用JIRA Rest web api实现统计自动化,首先进行登录模拟:

    $content = @{username='用户名';password='密码'}
    $JSON=$content|convertto-JSON -Compress
    $res = Invoke-WebRequest -Uri "http://jira地址/rest/auth/1/session" -Method Post -Body $JSON -ContentType application/json
    $webClient = new-object net.webclient
    #Set encoding style here.
    $webClient.Encoding=[System.Text.Encoding]::GetEncoding("utf-8")
    <# Note that the response contains the Set-Cookie HTTP headers that must be honoured by the caller. If you are using a cookie-aware HTTP client then it will handle all Set-Cookie headers automatically. This is important because setting the JSESSIONID cookie alone may not be sufficient for the authentication to work. #> $webClient.Headers.add("Cookie", $res.Headers["Set-Cookie"]) #Write-Host "调用获取登录状态接口" -ForegroundColor Green #$webClient.DownloadString("http://jira地址/rest/auth/1/session") #Write-Host "调用退出登录接口" -ForegroundColor Green #$webClient.UploadString("http://jira地址/rest/auth/1/session","DELETE","") #Write-Host "调用获取登录状态接口" -ForegroundColor Green #$webClient.DownloadString("http://jira地址/rest/auth/1/session")

    然后查询所有分派给我的任务,并遍历每个任务取出想要的信息(例如:报告人、开发、前端、Jira创建时间等信息):

    $jiraUri = "jira地址"
    #查询所有分派给天外归云的任务
    #Search using search request.通过查找接口用jql语句来进行查找(首先要创建一个JSON对象做为查找时post的body)
    #在PowerShell中创建JSON对象.
    $JSON = @"
    {
        "jql": "分派给 = 天外归云",
        "startAt": 0,
        "maxResults": 1000,
        "fields": [
            "summary",
            "status",
            "assignee"
        ]
    }
    "@
    $apiUri = "/rest/api/2/search"
    $uri = $jiraUri+$apiUri
    #Post json必须加的header.
    $webClient.Headers.Add("Content-Type", "application/json");
    $searchResult = $webClient.UploadString($uri,$JSON)
    #获取所有的issues(分派给天外归云的)
    $issues = ($searchResult|ConvertFrom-Json).issues
    #判断有没有这种field
    function NullOrNot($field){
        if(($field -ne $null) -and ($field -ne ""))
        {
           $field
        }else{
            $field="displayName : Null"
        }
    }
    #提取人员名单
    function GetDisplayName($oName){
        $displayNames = $oName|findstr "displayName"
        if($displayNames.count -ne 1){
            foreach($displayName in $displayNames){
                $newDisplayName += $displayName.split(":")[1]
                $newDisplayName += " "
            }
            $newDisplayName
        }else{
            $displayNames.split(":")[1]
        }
    }
    #遍历jira issue
    foreach($issue in $issues){
        $apiUri = $jiraUri+"/rest/api/2/issue/"+$issue.key
        $issueInfo = $webClient.DownloadString($apiUri)
        $issueInfo = $issueInfo|ConvertFrom-Json
        #$issueInfo.fields
        $reporter = GetDisplayName(NullOrNot($issueInfo.fields.reporter))
        Write-Host "报告人:"$reporter
        $productor = GetDisplayName(NullOrNot($issueInfo.fields.customfield_10206))
        Write-Host "产品人员:"$productor
        $qianDuan = GetDisplayName(NullOrNot($issueInfo.fields.customfield_10207))
        Write-Host "前端:"$qianDuan
        $developer = GetDisplayName(NullOrNot($issueInfo.fields.customfield_10208))
        Write-Host "开发:"$developer
        $fenPai = GetDisplayName(NullOrNot($issueInfo.fields.customfield_10002))
        Write-Host "分派给:"$fenPai
        $tiCeTime = $issueInfo.fields.created
        Write-Host "提测时间:"$tiCeTime
        Write-Host "用例数据:"$issueInfo.fields.customfield_11402 $issueInfo.fields.customfield_10400
        Write-Host "bug数:"$issueInfo.fields.customfield_10202
        Read-Host
    }

    以上过程中也包含了PowerShell应用于web接口测试的核心方法!

  • 相关阅读:
    硬盘任性丢数据,但分布式存储一定可靠吗?
    Service的基本组成
    固定cell.imageView.image的大小
    剪贴板服务
    取得正在运行的Activity
    取得正在运行的服务
    C#.NET学习笔记1---C#.NET简介
    取得手机的网络信息
    四、cocos2dx动画Animation介绍
    C#.NET学习笔记2---C#.第一个C#程序
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/5418700.html
Copyright © 2011-2022 走看看