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

如何用Python正则提取输出消息并优化CH1-11测试循环代码

Pexpect通道测试代码优化方案

代码优化后完整实现

import pexpect
import sys
import re
import io

def quick_test():
    # 同时捕获输出到缓存和控制台,方便后续正则提取结果
    output_cache = io.BytesIO()
    ch = pexpect.spawn('ssh to server')
    # 自定义写入逻辑,同时输出到控制台和缓存
    def write_both(data):
        output_cache.write(data)
        sys.stdout.buffer.write(data)
    ch.logfile = write_both

    ch.expect("Select channels")
    print("\n########################################\n")
    ch.sendline("1")
    ch.expect("Enter ch to run:")
    
    # 需求1:遍历1-11的循环替代逐行编写的冗余逻辑
    for ch_num in range(1, 12):
        test_cmd = f"CH{ch_num},0"
        ch.sendline(test_cmd)
        # 兼容原有首通道打印after的逻辑
        if ch_num == 1:
            print(ch.after)
        # 等待测试完成的提示
        ch.expect("Enter Test:")
        print(ch.before)
    
    # 需求2:正则提取所有通道测试结果
    output_content = output_cache.getvalue().decode('utf-8')
    # 匹配CH编号和对应状态的正则规则
    result_pattern = r'CH(\d+),0 Result: (SUCCESS|FAILED)'
    matches = re.findall(result_pattern, output_content)
    # 转为字典方便按通道编号排序输出
    result_dict = {int(ch_num): status for ch_num, status in matches}
    
    # 按要求格式输出结果
    print("\n===== 测试结果汇总 =====")
    for ch_num in range(1, 12):
        status = result_dict.get(ch_num, "UNKNOWN")
        print(f"<p>CH{ch_num}: {status}</p>")

if __name__ == '__main__':
    quick_test()

关键修改说明

  • 循环优化:用range(1,12)生成1到11的通道编号,把重复的命令发送、结果等待逻辑封装到循环内,完全替代逐行编写的CH1到CH11测试代码
  • 结果提取:通过缓存全量运行输出,用正则批量匹配所有通道的测试结果,即使结果行随机分布在海量输出中也能准确提取
  • 兼容原有逻辑:保留了原代码的交互流程、打印规则,不会改动原有测试的执行逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:45:00