我曾经从一个数据库中获得新的测试用例,这些测试用例基于具有以下格式的测试:
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]
型
1条答案
按热度按时间2w2cym1i1#
这就是你需要使用正则表达式的地方。我不知道你的测试用例是什么样子的,但是如果它们是由字母和数字组成的,没有空格,你可以使用这个模式来找到测试用例。
第一个月
你可以这样重写代码:
字符串
现在,如果你的文件的内容是这样的:
型
你会得到这样的输出:
型
在这一步中,你所有的测试用例都在一个列表中,这取决于你从它那里获得classname和testcases。