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

如何简化Shell脚本中的Python测试执行并优化脚本格式?

简化Shell脚本中的Python测试执行流程及脚本优化

嘿,我来帮你搞定这个Shell脚本的优化问题!重复的代码不仅看着闹心,维护起来也麻烦,咱们一步步把它变得简洁又好用。

核心优化思路

咱们主要从消除重复代码、提升可维护性和增强可读性这几个方向入手:

  • 提取重复的环境变量和命令作为公共变量,避免反复书写
  • 用数组存储测试用例,配合循环批量执行测试
  • 增加清晰的输出提示,让测试流程更直观
  • 可选:添加简单的错误处理,方便定位问题

优化后的完整脚本

#!/usr/bin/env bash

# 定义公共变量,方便后续修改
PYTHON_CMD="python27 -m unittest"
TEST_CONF_1="/var/..../test_1"
TEST_CONF_2="/var/..../test_2"

# 定义测试用例数组
TEST_CASES_GROUP_1=(
    test1
    test2
    test3
    test4
    test5
    test6
)
# 补充test_2对应的测试用例示例
TEST_CASES_GROUP_2=(
    test7
    test8
    test9
)

# 执行第一组测试
echo -e "\n=== Testing 1 ==="
for case in "${TEST_CASES_GROUP_1[@]}"; do
    echo "Running test: $case"
    CONF_PATH="$TEST_CONF_1" $PYTHON_CMD "$case"
    # 可选:如果希望某个测试失败就终止脚本,取消下面的注释
    # if [ $? -ne 0 ]; then
    #     echo "Test $case failed, exiting..."
    #     exit 1
    # fi
done

# 执行第二组测试
echo -e "\n=== Testing 2 ==="
for case in "${TEST_CASES_GROUP_2[@]}"; do
    echo "Running test: $case"
    CONF_PATH="$TEST_CONF_2" $PYTHON_CMD "$case"
done

echo -e "\n=== All tests completed ==="

优化点详解

  1. 公共变量提取:

    • 把python27 -m unittest定义为PYTHON_CMD,以后如果要换Python版本或者测试命令,只需要改这一行
    • 把重复的CONF_PATH路径抽成变量,修改路径时不用逐个替换
  2. 数组+循环批量执行:

    • 把同一组的测试用例放进数组里,用for循环遍历执行,避免重复写N条几乎一样的命令
    • 数组的写法也让测试用例的增删更直观,直接在数组里添加或删除即可
  3. 增强可读性:

    • 用=== Testing X ===这种分隔线区分不同测试组,输出更清晰
    • 每个测试执行前打印当前测试用例名称,方便追踪执行进度
  4. 可选错误处理:

    • 脚本里注释了错误处理的逻辑,如果需要某个测试失败就终止整个脚本,取消注释即可;如果希望继续执行后续测试,就保持当前状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:04:01