From a7bf9baa136889cec9d68c4c1cf0f315f6c7f266 Mon Sep 17 00:00:00 2001 From: Bernd Bornhausen Date: Wed, 19 Feb 2025 16:41:10 -0500 Subject: [PATCH] changes to support rf 4 --- Source/BDDLibrary.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/Source/BDDLibrary.py b/Source/BDDLibrary.py index 528e7fc..850ba4c 100644 --- a/Source/BDDLibrary.py +++ b/Source/BDDLibrary.py @@ -100,7 +100,7 @@ def update_feature_doc(self): def __is_a_feature__(self, test): if( not str(test.name).startswith("Feature:") ): return False - elif( len(test.keywords) != 0 ): + elif( len(test.body) != 0 ): return False return True @@ -125,30 +125,31 @@ def contains_background(self, tests=None): return number_of_background_test==1 and background_placed_in_second_place def parse(self, test): - self.__background_steps__ = test.keywords + self.__background_steps__ = test.body def add_background_step(self, test): insert_background_index = 0 if(self.__contain_setup__(test)): insert_background_index = 1 for background_keyword in self.__background_steps__ : - test.keywords.insert(insert_background_index, background_keyword) + test.body.insert(insert_background_index, background_keyword) insert_background_index += 1 return test def __is_a_background_test__(self, test): if( not str(test.name).startswith("Background:") ): return False - elif( len(test.keywords) == 0 ): + elif( len(test.body) == 0 ): return False return True def __contain_setup__(self, test): - return test.keywords.setup!=None + return test.body.setup!=None class ScenarioParser: + def __init__(self, execute_target_suite): self.__execute_target_suite__ = execute_target_suite self.__test__ = None @@ -156,7 +157,7 @@ def __init__(self, execute_target_suite): def is_scenario(self, test): if( not str(test.name).startswith("Scenario:") ): return False - elif( len(test.keywords) == 0 ): + elif( len(test.body) == 0 ): return False return True @@ -178,7 +179,7 @@ def is_scenario_outline(self, scenario): if( not str(scenario.name).startswith("Scenario Outline:") ): return False - for keyword in scenario.keywords: + for keyword in scenario.body: if(keyword.name.lower() == "examples:"): return True @@ -187,14 +188,14 @@ def is_scenario_outline(self, scenario): def parse(self, test): self.__example_data_table__ = list() self.__test__ = test - for keyword in test.keywords: + for keyword in test.body: if(keyword.name.lower() == "examples:"): self.__create_example_data_table__(keyword.args) break def addExamples(self): for serial_number, example_data in enumerate(self.__example_data_table__): - self.__add_an_example_test_case__(self.__test__.name, self.__test__.tags, self.__test__.keywords, serial_number, example_data) + self.__add_an_example_test_case__(self.__test__.name, self.__test__.tags, self.__test__.body, serial_number, example_data) def __create_example_data_table__(self, embedding_table): headers = list(map(lambda x: x.strip(),embedding_table[0].split('|'))) @@ -225,7 +226,7 @@ def __add_an_example_test_case__(self, test_name, test_tag, test_keywords, seria if(self.__keyword_argument_contain_embedding_key__(script_keyword.args)): # embedding table case script_keyword.args = self.__replace_keyword_argument_with_example_data__(script_keyword.args, example_data) - example_test_case.keywords.append(script_keyword) + example_test_case.body.append(script_keyword) def __keyword_name_contain_embedding_key__(self, keyword_name): return True if ("<" in keyword_name and ">" in keyword_name) else False @@ -266,7 +267,7 @@ def init(self): self.__embedding_data_dictionay__ = None def contains_embedding_table(self, test): - for keyword in test.keywords: + for keyword in test.body: if(self.__keyword_contains_embedding_table__(keyword)): return True @@ -274,15 +275,15 @@ def contains_embedding_table(self, test): def parse(self, test): self.__embedding_data_dictionay__ = dict() - for keyword in test.keywords: + for keyword in test.body: if(self.__keyword_contains_embedding_table__(keyword)): self.__add_embedding_data_pairing__(keyword.name, keyword.args) # use keyword name as key to prevent duplicate key in different keyword def add_embedding_step(self, test): result = copy.deepcopy(test) - for repeat_index, script_keyword in enumerate(result.keywords): + for repeat_index, script_keyword in enumerate(result.body): if script_keyword.name in self.__embedding_data_dictionay__.keys(): # remove the origin one - del result.keywords[repeat_index] + del result.body[repeat_index] while script_keyword.name in self.__embedding_data_dictionay__.keys(): embedding_argument = dict() @@ -296,7 +297,7 @@ def add_embedding_step(self, test): repeat_script_keyword = copy.deepcopy(script_keyword) repeat_script_keyword.args = [copy.deepcopy(embedding_argument), None] - result.keywords.insert(repeat_index, repeat_script_keyword) + result.body.insert(repeat_index, repeat_script_keyword) if not any(self.__embedding_data_dictionay__[script_keyword.name]): # remove if no key in a keyword del self.__embedding_data_dictionay__[script_keyword.name]