51Testing软件测试论坛

标题: 【seagull1985】自动化测试框架中的jenkins构建控制 [打印本页]

作者: seagull1985    时间: 2016-7-8 17:19
标题: 【seagull1985】自动化测试框架中的jenkins构建控制
自动化的框架设计中,少不了跟自动构建工具jenkins的配合,谈到jenkins,很多人首先想到的是jenkins 提供的API接口来控制构建。其实自动化框架控制jenkins自动构建有更简单的办法,如果用jenkins API的话,有点感觉杀鸡用了牛刀。下面我们就来看看怎么更简单的控制jenkins构建。
  首先,jenkins页面的构建按钮点击,都是一个get请求,知道了这一点我们就好办了。
[attach]101806[/attach]

第二步,就是用JAVA代码处理发送请求
  1. /**
  2.      * 向指定URL发送GET方法的请求
  3.      * 发起构建请求
  4.      * @param buildname
  5.      *            jenkins中的构建名称
  6.      * @param param
  7.      *            延迟多少秒进行构建
  8.      * @return URL 所代表远程资源的响应结果
  9.      */
  10.     public static String sendBuilding(String buildname, int param) {
  11.         String result = "";
  12.         BufferedReader in = null;
  13.         try {
  14.                 final String jenkinsurl = "http://xx.xx.xx.xx:18080/jenkins/job/";
  15.                
  16.             String urlString = jenkinsurl+buildname + "/build?delay="+param+"sec";
  17.                      
  18.             URL realUrl = new URL(urlString);
  19.             // 打开和URL之间的连接
  20.             URLConnection connection = realUrl.openConnection();
  21.             // 设置通用的请求属性
  22.             connection.setRequestProperty("accept", "*/*");
  23.             connection.setRequestProperty("connection", "Keep-Alive");
  24.             connection.setRequestProperty("user-agent",
  25.                     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  26.             // 建立实际的连接
  27.             connection.connect();
  28.             // 获取所有响应头字段
  29.             Map<String, List<String>> map = connection.getHeaderFields();
  30.             // 遍历所有的响应头字段
  31.             for (String key : map.keySet()) {
  32.                 JavaBaseTest.LogUtil.APP.info(key + "--->" + map.get(key));
  33.             }
  34.             // 定义 BufferedReader输入流来读取URL的响应
  35.             in = new BufferedReader(new InputStreamReader(
  36.                     connection.getInputStream()));
  37.             String line;
  38.             while ((line = in.readLine()) != null) {
  39.                 result += line;
  40.             }
  41.         } catch (Exception e) {
  42.             JavaBaseTest.LogUtil.APP.error("发送构建请求(GET)时出现异常!", e);
  43.             e.printStackTrace();
  44.         }
  45.         // 使用finally块来关闭输入流
  46.         finally {
  47.             try {
  48.                 if (in != null) {
  49.                     in.close();
  50.                 }
  51.             } catch (Exception e2) {
  52.                 e2.printStackTrace();
  53.             }
  54.         }
  55.         return result;
  56.     }
复制代码


第三步,发送完GET请求,我们就要知道当前构建有没有成功呢,请往下看
  1. /**
  2.      * 向指定URL发送GET方法的请求
  3.      * 判断最后一次构建有没有成功
  4.      * @param buildname
  5.      *            jenkins中的构建名称
  6.      * @return URL 所代表远程资源的响应结果
  7.      *
  8.      * alt="Success"  alt="In progress"  alt="Failed"
  9.      */
  10.     public static String BuildingResult(String buildname) {
  11.         String result = "";
  12.         BufferedReader in = null;
  13.         try {
  14.                 final String jenkinsurl = "http://xx.xx.xx.xx:18080/jenkins/job/";
  15.                
  16.             String urlString = jenkinsurl+buildname + "/lastBuild/";
  17.                      
  18.             URL realUrl = new URL(urlString);
  19.             // 打开和URL之间的连接
  20.             URLConnection connection = realUrl.openConnection();
  21.             // 设置通用的请求属性
  22.             connection.setRequestProperty("accept", "*/*");
  23.             connection.setRequestProperty("connection", "Keep-Alive");
  24.             connection.setRequestProperty("user-agent",
  25.                     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  26.             // 建立实际的连接
  27.             connection.connect();
  28.             // 获取所有响应头字段
  29.             Map<String, List<String>> map = connection.getHeaderFields();
  30.             // 遍历所有的响应头字段
  31.             for (String key : map.keySet()) {
  32.                 JavaBaseTest.LogUtil.APP.info(key + "--->" + map.get(key));
  33.             }
  34.             // 定义 BufferedReader输入流来读取URL的响应
  35.             in = new BufferedReader(new InputStreamReader(
  36.                     connection.getInputStream()));
  37.             String line;
  38.             while ((line = in.readLine()) != null) {
  39.                 result += line;
  40.             }
  41.         } catch (Exception e) {
  42.             JavaBaseTest.LogUtil.APP.error("发送构建请求(GET)时出现异常!", e);
  43.             e.printStackTrace();
  44.         }
  45.         // 使用finally块来关闭输入流
  46.         finally {
  47.             try {
  48.                 if (in != null) {
  49.                     in.close();
  50.                 }
  51.             } catch (Exception e2) {
  52.                 e2.printStackTrace();
  53.             }
  54.         }
  55.         return result;
  56.     }
复制代码








欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2