测试流程配置接口说明.md 6.18 KB

报销流程配置接口测试说明

测试前准备

  1. 启动后端服务

    # 确保后端服务在 localhost:2011 运行
    # 如果没有启动,请先启动后端服务
    
  2. 确保数据库表已创建

    -- 执行 sql/创建报销流程配置表.sql 中的SQL语句
    -- 确保以下表已创建:
    -- - lq_reimbursement_workflow_config
    -- - lq_reimbursement_workflow_node
    -- - lq_reimbursement_workflow_node_user
    

运行测试脚本

# 在项目根目录执行
python3 test_reimbursement_workflow_config_api.py

测试接口列表

1. 获取启用的流程列表

  • 接口: GET /api/Extend/LqReimbursementWorkflowConfig/Actions/GetEnabledList
  • 用途: 获取所有启用的流程配置,用于前端下拉选择
  • 返回: 基础信息列表(不含节点详情)

2. 获取流程列表(分页)

  • 接口: GET /api/Extend/LqReimbursementWorkflowConfig
  • 参数:
    • currentPage: 当前页码(默认1)
    • pageSize: 每页数量(默认20)
    • keyword: 关键字(流程名称模糊查询,可选)
    • queryJson: JSON字符串,可包含 {"isEnabled": 1} 来筛选启用状态
  • 返回: 分页列表,包含流程基础信息

3. 创建流程配置

  • 接口: POST /api/Extend/LqReimbursementWorkflowConfig
  • 请求体示例: json { "workflowName": "标准报销流程", "isEnabled": 1, "description": "适用于一般报销申请的审批流程", "nodes": [ { "nodeOrder": 1, "nodeName": "部门经理审批", "approvalType": "会签", "isRequired": 1, "approverIds": [], "approverNames": [] }, { "nodeOrder": 2, "nodeName": "财务审批", "approvalType": "会签", "isRequired": 1, "approverIds": [], "approverNames": [] } ] }
  • 验证规则:
    • 流程名称不能为空
    • 至少需要1个节点
    • 节点数量不能超过20个
    • 节点顺序必须连续(1, 2, 3, ...)
    • 节点名称不能为空
  • 返回: {"code": 200, "data": {"id": "流程配置ID"}}

4. 获取流程详细信息

  • 接口: GET /api/Extend/LqReimbursementWorkflowConfig/{id}
  • 用途: 获取流程的完整信息,包括所有节点和审批人
  • 返回: 完整的流程配置信息,包含所有节点详情

5. 更新流程配置

  • 接口: PUT /api/Extend/LqReimbursementWorkflowConfig/{id}
  • 请求体: 与创建接口相同,但必须包含 id 字段
  • 说明: 更新时会删除原有节点和审批人配置,重新创建
  • 验证规则: 与创建接口相同

手动测试示例(使用 curl)

1. 获取Token

curl -X POST "http://localhost:2011/api/oauth/Login" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "account=admin&password=e10adc3949ba59abbe56e057f20f883e"

2. 获取启用的流程列表

TOKEN="Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
curl -X GET "http://localhost:2011/api/Extend/LqReimbursementWorkflowConfig/Actions/GetEnabledList" \
  -H "Authorization: $TOKEN"

3. 获取流程列表

curl -X GET "http://localhost:2011/api/Extend/LqReimbursementWorkflowConfig?currentPage=1&pageSize=20" \
  -H "Authorization: $TOKEN"

4. 创建流程配置

curl -X POST "http://localhost:2011/api/Extend/LqReimbursementWorkflowConfig" \
  -H "Authorization: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "workflowName": "测试流程",
    "isEnabled": 1,
    "description": "测试描述",
    "nodes": [
      {
        "nodeOrder": 1,
        "nodeName": "节点1",
        "approvalType": "会签",
        "isRequired": 1,
        "approverIds": [],
        "approverNames": []
      }
    ]
  }'

5. 获取流程详细信息

WORKFLOW_ID="创建的流程ID"
curl -X GET "http://localhost:2011/api/Extend/LqReimbursementWorkflowConfig/$WORKFLOW_ID" \
  -H "Authorization: $TOKEN"

6. 更新流程配置

WORKFLOW_ID="要更新的流程ID"
curl -X PUT "http://localhost:2011/api/Extend/LqReimbursementWorkflowConfig/$WORKFLOW_ID" \
  -H "Authorization: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "'$WORKFLOW_ID'",
    "workflowName": "更新后的流程名称",
    "isEnabled": 1,
    "description": "更新后的描述",
    "nodes": [
      {
        "nodeOrder": 1,
        "nodeName": "更新后的节点1",
        "approvalType": "会签",
        "isRequired": 1,
        "approverIds": [],
        "approverNames": []
      }
    ]
  }'

测试检查点

创建接口测试

  • ✅ 正常创建流程(2个节点)
  • ✅ 流程名称为空 → 应该返回错误
  • ✅ 节点列表为空 → 应该返回错误
  • ✅ 节点顺序不连续(1, 3) → 应该返回错误
  • ✅ 节点名称为空 → 应该返回错误
  • ✅ 节点数量超过20个 → 应该返回错误

更新接口测试

  • ✅ 正常更新流程(修改名称、描述、节点)
  • ✅ 更新时增加节点数量
  • ✅ 更新时减少节点数量
  • ✅ 更新时修改节点顺序
  • ✅ 更新时修改审批类型(会签/或签)

查询接口测试

  • ✅ 获取列表(分页)
  • ✅ 获取列表(关键字搜索)
  • ✅ 获取列表(启用状态筛选)
  • ✅ 获取详细信息(包含所有节点)
  • ✅ 获取详细信息(包含审批人信息)

数据一致性测试

  • ✅ 创建后立即查询,数据应该一致
  • ✅ 更新后立即查询,数据应该一致
  • ✅ 创建流程后,节点数量应该正确
  • ✅ 更新流程后,原有节点应该被删除,新节点应该正确创建

预期结果

所有测试应该通过,接口应该:

  1. 正确验证输入参数
  2. 正确处理事务(创建/更新失败时回滚)
  3. 正确返回数据格式
  4. 数据一致性保证

注意事项

  1. 审批人ID: 当前测试脚本中审批人ID为空,实际使用时需要填入真实的用户ID
  2. Token过期: 如果Token过期,需要重新获取
  3. 数据库连接: 确保数据库连接正常
  4. 外键约束: 确保删除流程配置时,相关的节点和审批人配置也会被正确删除(已在SQL中设置CASCADE)