Python如何处理测试用例名称拆分为几行

cnh2zyt3  于 4个月前  发布在  Python
关注(0)|答案(1)|浏览(56)

我曾经从一个数据库中获得新的测试用例,这些测试用例基于具有以下格式的测试:

TEST_F(CLASSNAME, TESTCASENAME)

字符串
现在有一个测试用例,它的名称很长,自动格式化看起来像这样:

TEST_F(

CLASSNAME,

TESTCASENAME)


在我获得基于格式TEST_F(CLASSNAME,TESTCASENAME)的每一条信息之前,如下所示:

print("Looking for new tests")
    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:
                for line in f:
                    if "TEST_F(" in line:
                        data = line.split("TEST_F(")[1]
                        c_class = data.split(",")[0]
                        c_test_case = data.split(",")[1].split(")")[0].strip().split()[0]


但是如果有一个测试用例的名称和格式像我前面提到的那样长,

TEST_F(

CLASSNAME,

TESTCASENAME)


如何调整逻辑以获得每个值的值?
更新额外信息,测试命名应如下所示:

TEST_F(CMilestoneChallengeModelTest, SetChallenges_ListenerNotRegistered_ListenerIsNotNotified)


问题一

TEST_F(
    CDailyWinTest,
GIVEN_DailyWinRevamped_WHEN_PlayerWinGameinDay_AND_DoesntCollectAllStickers_THEN_CelebrationPopupAppear)


根据注解更新代码

print("Looking for new tests")
    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:
                content = f.read()
                test_cases = re.findall(r'TEST_F\(\s*\w*\s*,\s*\w*\s*\)', content)
                for line in test_cases:
                    if "TEST_F(" in line:
                        data = line.split("TEST_F(")[1]
                        c_class = data.split(",")[0]
                        c_test_case = data.split(",")[1].split(")")[0].strip().split()[0]

2w2cym1i

2w2cym1i1#

这就是你需要使用正则表达式的地方。我不知道你的测试用例是什么样子的,但是如果它们是由字母和数字组成的,没有空格,你可以使用这个模式来找到测试用例。
第一个月
你可以这样重写代码:

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:
            content = f.read()
            test_cases = re.findall(r'TEST_F\(\s*\w*\s*,\s*\w*\s*\)',content)
            print(test_cases)

字符串
现在,如果你的文件的内容是这样的:

TEST_F(CLASSNAME1, TESTCASENAME1)
TEST_F(CLASSNAME2, TESTCASENAME2)
TEST_F(
    CLASSNAME3,
     TESTCASENAME
    )


你会得到这样的输出:

['TEST_F(CLASSNAME1, TESTCASENAME1)', 'TEST_F(CLASSNAME2, TESTCASENAME2)', 'TEST_F(\n    CLASSNAME3,\n     TESTCASENAME\n    )']


在这一步中,你所有的测试用例都在一个列表中,这取决于你从它那里获得classname和testcases。

相关问题