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

如何处理跨多行拆分的TEST_F测试用例名称提取逻辑?

解决多行TEST_F格式的类名与测试用例名提取问题

原来的代码仅能处理单行的TEST_F(CLASSNAME, TESTCASENAME)格式,遇到跨多行的格式化结果就会失效。可以通过跟踪TEST_F代码块、合并多行内容的方式修复,修改后的代码逻辑如下:

import os

print("Looking for new tests")
cpp_tests_dir_path = "你的测试文件目录路径"  # 替换为实际路径

for root, dirs, files in os.walk(cpp_tests_dir_path):
    for file in files:
        with open(os.path.join(root, file), encoding="utf8", errors='ignore') as f:
            in_test_f = False
            test_f_content = []
            for line in f:
                stripped_line = line.strip()
                if "TEST_F(" in stripped_line:
                    in_test_f = True
                    # 提取TEST_F(之后的内容,加入收集列表
                    test_f_content.append(stripped_line.split("TEST_F(")[1])
                elif in_test_f:
                    test_f_content.append(stripped_line)
                    # 检查是否到结束符)
                    if ")" in stripped_line:
                        in_test_f = False
                        # 合并所有收集的内容,去除多余空白
                        full_content = ''.join(test_f_content).replace(' ', '').replace('\t', '')
                        # 分割类名和测试用例名
                        parts = full_content.split(",")
                        if len(parts) >= 2:
                            c_class = parts[0].strip()
                            c_test_case = parts[1].split(")")[0].strip()
                            print(f"类名: {c_class}, 测试用例名: {c_test_case}")
                        # 重置收集列表
                        test_f_content = []

关键修改说明:

  • 新增in_test_f状态变量,标记是否处于TEST_F代码块的处理状态
  • 检测到TEST_F(时,开始收集后续所有行的内容,直到遇到闭合符)
  • 合并收集到的内容后,先清除所有空白字符(空格、换行、制表符),再用分割逻辑提取类名和测试用例名
  • 处理完成后重置状态和收集列表,继续处理文件后续内容

这种逻辑同时兼容单行和多行的TEST_F格式,无论自动格式化如何换行,只要核心结构符合TEST_F(类名, 测试用例名)的规则,都能正确提取目标内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:22:47