test-action:基于 GitHub Actions 的测试插件实践项目

测试工程领域Action插件

分支7Tags6
文件最后提交记录最后更新时间
1 个月前
3 天前
3 天前
3 天前
9 天前
3 天前
12 天前
17 天前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
11 天前
11 天前
1 个月前
1 个月前

test-action

测试工程领域 GitCode Actions 插件集合。

本仓库聚焦于 GitCode Actions 测试工程领域的插件开发与维护,提供从用例调度执行、元数据收集、报告上传到结果汇总展示的端到端能力,适用于持续集成场景下对 pytest 用例的自动化执行和可视化运营。

目录

1、简介

本仓库收录一组运行于 GitCode Actions 的测试工程领域插件,覆盖 pytest 用例环境调度与编排执行、用例元数据收集、结果上传和结果汇总展示。各插件独立可用,也可串联成完整的测试流水线。流水线测试整体流程如下:

graph TB
  U1[编写用例] --> U3[编辑测试任务配置文件]
  U3 --> U4[触发测试Job启动]
  U4 --> P1

  P1([执行机是被测环境]) -->|是| P2[筛选用例]
  P1 --否--> P6

  %% 执行机即被测环境:本地执行 + 元数据收集 + 日志归档
  P2 --> P3[执行机本地执行用例]
  P3 --> RC1[生成测试报告]
  RC1 --> RC2
  subgraph metadata-collect ["metadata-collect插件"]
    RC2[生成用例全集元数据]
  end
  RC2 --> P4[日志收集]
  subgraph upload-reports ["upload-reports插件"]
    P5[日志归档]
  end
  P4 --> P5

  %% 执行机非被测环境:pytest-orch 编排远程 / 本地执行
  subgraph orch ["pytest-orch插件"]
    P6[筛选用例] --> P7[用例环境分类申请]
    P7 --> P9

    subgraph run-testcase [执行用例]
      P9([远程执行])
      P9 -->|否| E1[同步用例仓至被测机]
      P9 -->|是| P10[执行机远程被测机执行用例]
      E1 --> E2[被测机本地执行用例]
      E2 --> E3[CMD命令执行]
    end
    style run-testcase stroke-dasharray: 5 5,fill:none

    P10 -->|ssh跨节点执行命令| E3
    run-testcase --> RD1[生成测试报告]
    RD1 --> RD2[生成用例全集元数据]
    RD2 --> E4[日志收集]
    E4 --> E5[日志归档]
  end

  U5[结果和日志查看]
  I3[数字化运营看板]

  subgraph test-result-display ["test-result-display插件"]
    E5 --> U5
  end
  P5 --> U5
  U5 --> I3

插件 uses 使用格式为 openlibing/test-action/<插件目录>@<tag>,下文示例统一使用 tag v1.0.2 作为示例,请按最新的标签替换。

2、插件一览

插件名称 作用 使用示例 参考连接
pytest-orch 实现用例筛选,按用例环境标签调度环境,编排用例至对应类型环境执行,输出测试报告并收集测试日志归档保存完整流程 openlibing/test-action/pytest-orch@v1.0.2 README
metadata-collect 用于指定测试用例路径,获取全量pytest测试用例元数据,生成 XML 格式的用例全集的报告 openlibing/test-action/metadata-collect@v1.0.2 README
upload-reports 将用例元数据报告/测试结果报告等文件上传至 openLiBing openlibing/test-action/upload-reports@v1.0.2 README
test-result-display 将测试结果和日志归档链接等信息写入Markdown文件并对接至GitCode平台,在Actions流水线的概览下展示 openlibing/test-action/test-result-display@v1.0.2 README
precision-test 基于代码覆盖率变更的精准测试用例选择器,按行/函数/文件粒度筛选受影响用例 openlibing/test-action/precision-test@v1.0.2 README

各插件的输入/输出参数、使用约束与完整示例详见插件目录下的 README。

3、典型使用场景示例

3.1、示例1:使用pytest-orch插件实现用例执行与结果展示

使用 pytest-orch 插件调度执行用例,按用例环境标签分类环境,编排用例至对应类型环境执行,输出测试报告并收集测试日志归档保存完整流程。 使用 test-result-display 插件对接GitCode平台,在Actions流水线的概览下展示测试结果。

steps:
  # 调度执行用例
  - name: Run tests
    id: orch
    uses: openlibing/test-action/pytest-orch@v1.0.2
    with:
      testcase-config-file: "tests/xxx/xxx_pytest.ini"
      scheduler-secret: ${{ secrets.SCHEDULER_SECRET }}
      obs-bucket-name: ${{ vars.OBS_BUCKET_NAME }}
      obs-server: ${{ vars.OBS_SERVER }}
      obs-base-url: ${{ vars.OBS_BASE_URL }}

  # 汇总展示结果
  - name: Display results
    uses: openlibing/test-action/test-result-display@v1.0.2
    with:
      json-file: ${{ steps.orch.outputs.testcase-file }}

3.2、示例2:不使用pytest-orch插件实现元数据收集、上传与结果展示

在不使用pytest-orch 插件,用户使用自建测试工程时,可以独立使用 metadata-collect, upload-reports, test-result-display 等插件实现用例元数据收集,上传报告至openLiBing数字化运营平台,以及对接GitCode平台呈现测试结果。

permissions:
  repository: read
  id-token: write # upload-reports 需通过 OIDC 联邦认证免密上传

steps:
  # 收集用例元数据
  - name: Collect metadata
    id: collect
    uses: openlibing/test-action/metadata-collect@v1.0.2
    with:
      testcase-path: tests

  # 其他测试流程

  # 上传元数据
  - name: Upload metadata
    uses: openlibing/test-action/upload-reports@v1.0.2
    with:
      files: ${{ steps.collect.outputs.metadata-output-path }}
      label: smoke

  # 汇总展示结果
  - name: Display results
    uses: openlibing/test-action/test-result-display@v1.0.2
    with:
      json-file: ${{ steps.xxx.outputs.xxx-json-file }}

4、开发说明

  • Node 版本要求:当前gitcode仅支持node16版本。

项目介绍

测试工程领域Action插件

定制我的领域