如何简化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 ==="
优化点详解
公共变量提取:
- 把
python27 -m unittest定义为PYTHON_CMD,以后如果要换Python版本或者测试命令,只需要改这一行 - 把重复的
CONF_PATH路径抽成变量,修改路径时不用逐个替换
- 把
数组+循环批量执行:
- 把同一组的测试用例放进数组里,用
for循环遍历执行,避免重复写N条几乎一样的命令 - 数组的写法也让测试用例的增删更直观,直接在数组里添加或删除即可
- 把同一组的测试用例放进数组里,用
增强可读性:
- 用
=== Testing X ===这种分隔线区分不同测试组,输出更清晰 - 每个测试执行前打印当前测试用例名称,方便追踪执行进度
- 用
可选错误处理:
- 脚本里注释了错误处理的逻辑,如果需要某个测试失败就终止整个脚本,取消注释即可;如果希望继续执行后续测试,就保持当前状态
内容的提问来源于stack exchange,提问作者Desiderium
相关产品推荐
相关产品推荐

