You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解决ALM与Eclipse工作区集成的自动化测试联动问题

实现ALM与Eclipse Selenium项目集成的方案

1. 将Eclipse中的Selenium项目打包为可执行Jar

  • 在Eclipse中右键目标项目 → Export → Runnable JAR File
  • 选择包含main方法的Selenium测试主类,勾选Package required libraries into generated JAR,将Jar包导出到固定路径(例如D:\selenium-automation\test-executor.jar)
  • 本地验证:打开命令行执行 java -jar D:\selenium-automation\test-executor.jar,确认Selenium脚本可正常运行并输出执行结果

2. 配置ALM自定义工作流,触发Jar执行

  • 登录ALM后台,进入Customization模块(需管理员权限)
  • 定位到目标测试集,编辑其工作流脚本:
    • 在测试用例执行触发事件(如TEST_RUN_START)中添加命令行执行逻辑,示例VBScript代码:
      Function Test_Run_MoveTo(status)
          If status = "Ready" Then
              Dim shellObj
              Set shellObj = CreateObject("WScript.Shell")
              ' 传递ALM测试用例ID作为参数,供Selenium脚本识别对应任务
              shellObj.Run "java -jar D:\selenium-automation\test-executor.jar " & Test_Fields.Field("TS_TEST_ID").Value, 0, True
              Set shellObj = Nothing
          End If
      End Function
      

3. 在Selenium代码中集成ALM REST API同步测试结果

  • 在Java项目中添加HTTP请求依赖(或直接用HttpURLConnection),执行完Selenium测试后调用ALM API更新对应测试用例状态:
    • 示例Java代码片段:
      import java.net.HttpURLConnection;
      import java.net.URL;
      import java.io.OutputStream;
      import org.json.JSONObject;
      
      public class AlmResultSync {
          public static void syncResult(String almTestId, boolean isPassed) throws Exception {
              // ALM基础配置
              String almServer = "http://your-alm-domain/qcbin/rest/domains/[DOMAIN]/projects/[PROJECT]";
              String user = "alm-username";
              String pwd = "alm-password";
              
              // 登录获取会话Cookie
              URL loginUrl = new URL(almServer + "/authentication-point/authenticate");
              HttpURLConnection loginConn = (HttpURLConnection) loginUrl.openConnection();
              loginConn.setRequestMethod("POST");
              loginConn.setDoOutput(true);
              OutputStream os = loginConn.getOutputStream();
              os.write(("j_username=" + user + "&j_password=" + pwd).getBytes());
              os.flush();
              String sessionCookie = loginConn.getHeaderField("Set-Cookie");
              
              // 更新测试结果
              URL updateUrl = new URL(almServer + "/runs/" + almTestId);
              HttpURLConnection updateConn = (HttpURLConnection) updateUrl.openConnection();
              updateConn.setRequestMethod("PUT");
              updateConn.setRequestProperty("Cookie", sessionCookie);
              updateConn.setRequestProperty("Content-Type", "application/json");
              updateConn.setDoOutput(true);
              
              JSONObject payload = new JSONObject();
              payload.put("status", isPassed ? "Passed" : "Failed");
              os = updateConn.getOutputStream();
              os.write(payload.toString().getBytes());
              os.flush();
              
              if (updateConn.getResponseCode() == 200) {
                  System.out.println("ALM测试结果同步成功");
              } else {
                  System.err.println("ALM测试结果同步失败");
              }
          }
      }
      
    • 在Selenium主类的测试逻辑结束后,调用syncResult方法,传入ALM测试用例ID和执行结果

4. 调试与验证

  • 在ALM中手动触发测试用例执行,检查命令行是否被调用、Jar包是否正常运行
  • 确认ALM中对应测试用例的执行状态被正确更新
  • 排查权限问题:确保ALM服务账户有执行命令行和访问Jar包路径的权限,操作用户有修改测试结果的权限

内容的提问来源于stack exchange,提问作者Pradeep Peketi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 22:33:15