diff --git a/orm.py b/orm.py index 29cea90..9a7164b 100644 --- a/orm.py +++ b/orm.py @@ -81,11 +81,11 @@ def parseCaseStep(case_step_txt): def parseStep(index, step_txt): step = {} step["instruction"] = step_txt[0].strip() - step["expected"] = step_txt[1].strip() + step["expected"] = step_txt[3].strip() step["number"] = index return step - regex = re.compile(ur'WHEN(.*?)\nTHEN([^\n]*)', re.IGNORECASE | re.DOTALL) + regex = re.compile(ur'WHEN((.(?!WHEN|THEN))*.)((?:THEN)((.(?!WHEN))*.)|)', re.IGNORECASE | re.DOTALL) steps = re.findall(regex, case_step_txt) case_step = [] diff --git a/test/case_step.out.json b/test/case_step.out.json new file mode 100644 index 0000000..cbbe402 --- /dev/null +++ b/test/case_step.out.json @@ -0,0 +1,17 @@ +[ + { + "expected": "Handle successfully", + "instruction": "This is an one-line W/T instruction", + "number": 1 + }, + { + "expected": "Handle successfully", + "instruction": "This is a two-line W/T instruction", + "number": 2 + }, + { + "expected": "Handle\nsuccessfully", + "instruction": "This \nis \na \nmultiple-\nline\nW/T\ninstruction", + "number": 3 + } +] diff --git a/test/case_step.txt b/test/case_step.txt new file mode 100644 index 0000000..4d46f64 --- /dev/null +++ b/test/case_step.txt @@ -0,0 +1,14 @@ +WHEN This is an one-line W/T instruction THEN Handle successfully + +WHEN This is a two-line W/T instruction +THEN Handle successfully + +WHEN This +is +a +multiple- +line +W/T +instruction +THEN Handle +successfully diff --git a/test/test_orm.py b/test/test_orm.py index 9b37171..48b45fe 100644 --- a/test/test_orm.py +++ b/test/test_orm.py @@ -53,5 +53,20 @@ def test_parseSuite(self): self.assertEqual(orm.parseSuite(in_txt)['objects'], suite_out['objects']) #self.assertEqual(orm.parseSuite(self.txt)['description'], suite_out['description']) self.assertEqual(orm.parseSuite(in_txt), suite_out) + +class TestOrmCaseStep(unittest.TestCase): + def setUp(self): + with open('case_step.txt', 'r') as f: + self.txt = ''.join(f.readlines()) + with open('case_step.out.json') as f: + self.json_out = ''.join(f.readlines()) + + def test_parseCaseStep(self): + in_txt = self.txt + case_step_out = json.loads(self.json_out) + self.assertEqual(len(orm.parseCaseStep(in_txt)), len(case_step_out)) + self.assertEqual(orm.parseCaseStep(in_txt)[0], case_step_out[0]) + self.assertEqual(orm.parseCaseStep(in_txt), case_step_out) + if __name__ == '__main__': unittest.main()