【问题标题】:Updating execution status by test case ID/schedule ID using REST API使用 REST API 通过测试用例 ID/计划 ID 更新执行状态
【发布时间】:2019-01-07 12:16:05
【问题描述】:

我有 Zephyr 相关的查询,如何通过使用测试用例 ID 和 rest API 将测试用例的执行状态更新为 PASS/FAIL/WIP。
我在下面的链接中提到了这篇文章
https://support.getzephyr.com/hc/en-us/articles/205042055-Sample-REST-API-Update-execution-status-of-a-testcase-JAVA-
在此示例中,他们展示了如何使用 Schedule ID 更新执行状态,但实现是在 SOAP 中,我们需要使用 REST API 来实现相同的目的。是否有任何直接的 REST API 来获取日程 ID?
此外,是否有直接 REST API 使用测试用例 ID 更新测试用例的执行状态?如果是,您能提供以上两种情况的例子吗?

提前致谢。

【问题讨论】:

    标签: rest automated-tests jira-zephyr


    【解决方案1】:

    Jira REST API 中没有使用测试用例 ID 更新执行状态的直接方法。但是,您可以使用以下自定义方法:

    import java.util.HashMap;
    import java.util.Map;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.commons.io.IOUtils;
    import org.codehaus.jettison.json.JSONObject;
    import java.net.Proxy;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class JiraAuthHeader {
        public static void main(String args[])
        {
            try {
                JiraAuthHeader jiraAuthHeaderObj= new JiraAuthHeader();
                System.out.println(" Create Execution method*********");
                int executionId= jiraAuthHeaderObj.createExecution(<project id>,<issue id>,<cycle id>);
                 System.out.println(" Update Execution method*********");
                 jiraAuthHeaderObj.updateExecution(executionId,"pass");
    
    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        public  String updateExecution(int executionId, String status) throws Exception {
            System.out.println("Executing execution with executionId " + executionId + " and status = " + status);
    
            String url = "https://jira.company.com/jira/rest/zapi/latest/execution/" + executionId + "/execute";
            //String url = "https://jira.company.com/jira/rest/zapi/latest/execution";
            String statusInReq = "";
    
            if (status.equalsIgnoreCase("pass")) {
                statusInReq = "1";
            } else if (status.equalsIgnoreCase("fail")) {
                statusInReq = "2";
            }
    
            // Create request body
            JSONObject obj = new JSONObject();
            obj.put("status", statusInReq);
            obj.put("comment", "through java");
    
            String requestBody = obj.toString();
            System.out.println("Request body: " + requestBody);
            HttpURLConnection conn
             = httpPut(url, null, null, obj.toString());
            System.out.println("HTTP response code: " + conn.getResponseCode());
            String response = getResponse(conn);
            System.out.println("HTTP response content: " + response);
            System.out.println("from HTTP response content fetch the execution id: " + response.substring(6, 12));
    
            return response;
        }
    
    
        public HttpURLConnection httpGet(String url, Map<String, String> requestHeaders, String queryString) throws Exception {
            System.out.println("Get request");
    
            if (queryString != null) {
                url += "?" + queryString;
            }
    
            if (requestHeaders == null) {
                requestHeaders = new HashMap<String, String>();
            }
            requestHeaders.put("Content-Type", "application/json");
    
            return openConnection(url, "GET", requestHeaders, null);
        }
        public HttpURLConnection httpPut(String url, Map<String, String> requestHeaders, String queryString, String requestContent) throws Exception {
            System.out.println("Put request");
    
            if (queryString != null) {
                url += "?" + queryString;
            }
    
             System.out.println(url);
            if (requestHeaders == null) {
                requestHeaders = new HashMap<String, String>();
            }
            requestHeaders.put("Content-Type", "application/json");
    
            return openConnection(url, "PUT", requestHeaders, requestContent);
        }
        public HttpURLConnection httpPost(String url, Map<String, String> requestHeaders, String queryString, String requestContent) throws Exception {
            System.out.println("Post request");
    
            if (queryString != null) {
                url += "?" + queryString;
            }
    
             System.out.println(url);
            if (requestHeaders == null) {
                requestHeaders = new HashMap<String, String>();
            }
            requestHeaders.put("Content-Type", "application/json");
    
            return openConnection(url, "POST", requestHeaders, requestContent);
        }
        private HttpURLConnection openConnection(String url, String requestMethod, Map<String, String> requestHeaders, String requestContent)
                throws Exception {
            boolean usingProxy = false;
    
            HttpURLConnection conn = null;
            if (usingProxy) {
                /*String[] proxyInfo = jiraIntegrationConfig.getProxyServer().split(":");
                Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyInfo[0], Integer.valueOf(proxyInfo[1])));
                conn = (HttpURLConnection) new URL(url).openConnection(proxy);*/
            } else {
                conn = (HttpURLConnection) new URL(url).openConnection(Proxy.NO_PROXY);
    
                String auth = "ssing621" + ":" + "amex^123";
                auth = "Basic " + new String(new sun.misc.BASE64Encoder().encode(auth.getBytes()));
    
                conn.setRequestProperty("Authorization", auth);
                conn.setRequestMethod(requestMethod);
    
                if (requestHeaders != null && requestHeaders.size() > 0) {
                    for (String key : requestHeaders.keySet()) {
                        conn.setRequestProperty(key, requestHeaders.get(key));
                    }
                }
    
                if (requestContent != null) {
                    conn.setDoOutput(true);
                    conn.getOutputStream().write(requestContent.getBytes("UTF-8"));
                }
    
    
        }
            return conn;
    
        }
        private String getResponse(HttpURLConnection conn) throws Exception {
            String response;
            if (conn.getResponseCode() == 200 || conn.getResponseCode() == 201) {
                response = IOUtils.toString(conn.getInputStream());
                return response;
            } else {
                response = IOUtils.toString(conn.getErrorStream());
                throw new Exception(response);
            }
        }
        public int getIssueIdByKey(String issueKey) throws Exception {
            System.out.println("Getting issue ID for test: [" + issueKey + "]");
            String url = ("https://jira.company.com/jira/rest/api/2/issue/" + issueKey);
    
            HttpURLConnection conn = httpGet(url, null, null);
            String response = getResponse(conn);
    
            JSONObject resObj = new JSONObject(response);
    
            if (resObj.has("id")) {
                int issueId = resObj.getInt("id");
    
                System.out.println("Found issue ID: " + issueId);
    
    
                return issueId;
            }
    
            System.out.println("Could not find IssueId for test: [" + issueKey + "]");
            return 0;
        }
    
        public int createExecution(int projectId, int issueId, int cycleId) throws Exception {
            System.out.print("Creating execution for project Id " + projectId + " and issueId " + issueId);
            String url = ("https://jira.company.com/jira/rest/zapi/latest/execution");
    
            // Create request body
            JSONObject reqObj = new JSONObject();
            reqObj.put("issueId", issueId);
            reqObj.put("projectId", projectId);
            reqObj.put("cycleId", cycleId);
    
            String requestBody = reqObj.toString();
            System.out.println("Request body: " + requestBody);
    
            HttpURLConnection conn = httpPost(url, null, null, requestBody);
            System.out.println("HTTP response code: " + conn.getResponseCode());
            String response = getResponse(conn);
            System.out.println("HTTP response content: " + response);
    
            // Parse the Execution Id, and return it
            JSONObject resObj = new JSONObject(response);
            int executionId = Integer.valueOf(resObj.keys().next().toString());
            System.out.println("Creation done, execution ID: " + executionId);
    
            return executionId;
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多