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

如何在GitLab pipeline中执行SynapseRT测试用例

在GitLab Pipeline中执行SynapseRT测试用例配置方案

前置准备

提前确认你已经拿到以下信息,避免配置过程中来回核对:

  • SynapseRT实例的API访问地址
  • 拥有测试用例执行权限的账号API令牌
  • 目标测试用例所属的项目Key、测试用例集ID

第一步:配置GitLab CI/CD加密变量

不要把敏感信息硬编码到配置文件中,先在GitLab项目侧配置加密变量:

  • 进入项目侧边栏「设置」-「CI/CD」-「变量」页面,添加以下变量:
    • SYNAPSERT_API_URL:SynapseRT实例的API根地址
    • SYNAPSERT_API_TOKEN:有权限的账号API令牌,勾选「隐藏变量」避免泄露
    • SYNAPSERT_PROJECT_KEY:SynapseRT中对应项目的唯一标识
    • SYNAPSERT_TEST_SUITE_ID:需要执行的测试用例集ID

第二步:编写.gitlab-ci.yml配置

以下是可直接使用的配置模板,可根据你的实际业务调整触发条件、轮询间隔等参数:

stages:
  - test

synapsert-test-run:
  stage: test
  # 可根据你使用的SynapseRT SDK语言替换基础镜像,这里用带Python的轻量镜像做接口调用
  image: python:3.10-slim
  before_script:
    - apt update && apt install -y curl
    - pip install requests
  script:
    # 调用SynapseRT接口触发测试用例执行
    - |
      run_response=$(curl --location --request POST "${SYNAPSERT_API_URL}/testrun/create" \
      --header "Authorization: Bearer ${SYNAPSERT_API_TOKEN}" \
      --header "Content-Type: application/json" \
      --data-raw '{
        "projectKey": "'"${SYNAPSERT_PROJECT_KEY}"'",
        "testSuiteId": "'"${SYNAPSERT_TEST_SUITE_ID}"'",
        "runName": "GitLab CI触发执行-'${CI_COMMIT_SHORT_SHA}'",
        "executeNow": true
      }')
    # 提取测试运行ID轮询执行结果
    - test_run_id=$(echo $run_response | python -c "import sys,json; print(json.load(sys.stdin)['testRunId'])")
    # 轮询测试结果,直到执行完成或异常终止
    - |
      while true; do
        status_res=$(curl --location --request GET "${SYNAPSERT_API_URL}/testrun/${test_run_id}/status" \
        --header "Authorization: Bearer ${SYNAPSERT_API_TOKEN}")
        run_status=$(echo $status_res | python -c "import sys,json; print(json.load(sys.stdin)['status'])")
        if [ "${run_status}" = "COMPLETED" ]; then
          echo "测试执行完成"
          run_result=$(echo $status_res | python -c "import sys,json; print(json.load(sys.stdin)['result'])")
          if [ "${run_result}" = "PASS" ]; then
            exit 0
          else
            echo "测试用例执行失败,测试运行ID:${test_run_id},请登录SynapseRT查看详情"
            exit 1
          fi
        elif [ "${run_status}" = "FAILED" ] || [ "${run_status}" = "ABORTED" ]; then
          echo "测试运行异常终止,状态:${run_status}"
          exit 1
        fi
        echo "测试运行中,10秒后刷新状态..."
        sleep 10
      done
  # 可自行调整触发分支,比如只在MR和主分支提交时执行
  only:
    - main
    - merge_requests

常见报错排查

如果运行时遇到错误,可优先核对以下内容:

  • 401/403权限报错:确认API令牌没有过期、权限足够,变量配置没有多余空格或大小写错误
  • 接口连接超时:确认GitLab Runner所在网络可以正常访问SynapseRT实例,没有防火墙或安全组拦截
  • 测试执行触发失败:确认请求参数中的项目Key、测试用例集ID和SynapseRT后台配置一致
  • 状态查询异常:不同版本的SynapseRT接口返回字段可能有差异,可打印接口返回内容核对字段是否匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:04