From 4697a538208f8d2135d981a6e455853eab32fa0f Mon Sep 17 00:00:00 2001 From: debugtalk Date: Thu, 3 Aug 2017 23:56:05 +0800 Subject: [PATCH] make comparator classified --- ate/utils.py | 47 ++++++++++++++++++++++++++++----------------- tests/test_utils.py | 26 +++++++++++-------------- 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/ate/utils.py b/ate/utils.py index 320412f6..9d6d6151 100644 --- a/ate/utils.py +++ b/ate/utils.py @@ -159,22 +159,6 @@ def match_expected(value, expected, comparator="eq", check_item=""): if comparator in ["eq", "equals", "=="]: assert value == expected - elif comparator in ["str_eq", "string_equals"]: - assert str(value) == str(expected) - elif comparator in ["ne", "not_equals"]: - assert value != expected - elif comparator in ["len_eq", "length_equal", "count_eq"]: - assert len(value) == expected - elif comparator in ["len_gt", "count_gt", "length_greater_than", "count_greater_than"]: - assert len(value) > expected - elif comparator in ["len_ge", "count_ge", "length_greater_than_or_equals", \ - "count_greater_than_or_equals"]: - assert len(value) >= expected - elif comparator in ["len_lt", "count_lt", "length_less_than", "count_less_than"]: - assert len(value) < expected - elif comparator in ["len_le", "count_le", "length_less_than_or_equals", \ - "count_less_than_or_equals"]: - assert len(value) <= expected elif comparator in ["lt", "less_than"]: assert value < expected elif comparator in ["le", "less_than_or_equals"]: @@ -183,16 +167,43 @@ def match_expected(value, expected, comparator="eq", check_item=""): assert value > expected elif comparator in ["ge", "greater_than_or_equals"]: assert value >= expected + elif comparator in ["ne", "not_equals"]: + assert value != expected + elif comparator in ["str_eq", "string_equals"]: + assert str(value) == str(expected) + elif comparator in ["len_eq", "length_equals", "count_eq"]: + assert isinstance(expected, int) + assert len(value) == expected + elif comparator in ["len_gt", "count_gt", "length_greater_than", "count_greater_than"]: + assert isinstance(expected, int) + assert len(value) > expected + elif comparator in ["len_ge", "count_ge", "length_greater_than_or_equals", \ + "count_greater_than_or_equals"]: + assert isinstance(expected, int) + assert len(value) >= expected + elif comparator in ["len_lt", "count_lt", "length_less_than", "count_less_than"]: + assert isinstance(expected, int) + assert len(value) < expected + elif comparator in ["len_le", "count_le", "length_less_than_or_equals", \ + "count_less_than_or_equals"]: + assert isinstance(expected, int) + assert len(value) <= expected elif comparator in ["contains"]: + assert isinstance(value, (list,tuple,dict,string_type)) assert expected in value elif comparator in ["contained_by"]: + assert isinstance(expected, (list,tuple,dict,string_type)) assert value in expected + elif comparator in ["type"]: + assert isinstance(value, expected) elif comparator in ["regex"]: + assert isinstance(expected, string_type) + assert isinstance(value, string_type) assert re.match(expected, value) - elif comparator in ["str_len", "string_length"]: - assert len(value) == int(expected) elif comparator in ["startswith"]: assert str(value).startswith(str(expected)) + elif comparator in ["endswith"]: + assert str(expected).startswith(str(value)) else: raise exception.ParamsError("comparator not supported!") diff --git a/tests/test_utils.py b/tests/test_utils.py index 9af1a1cb..5d7f9b75 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -156,42 +156,38 @@ class TestUtils(ApiServerUnittest): def test_match_expected(self): self.assertTrue(utils.match_expected(1, 1, "eq")) - self.assertTrue(utils.match_expected("abc", "abc", "eq")) + self.assertTrue(utils.match_expected("abc", "abc", "==")) self.assertTrue(utils.match_expected("abc", "abc")) with self.assertRaises(exception.ValidationError): utils.match_expected(123, "123", "eq") - with self.assertRaises(exception.ValidationError): utils.match_expected(123, "123") - self.assertTrue(utils.match_expected("123", 3, "len_eq")) - self.assertTrue(utils.match_expected(123, "123", "str_eq")) - self.assertTrue(utils.match_expected(123, "123", "ne")) - - self.assertTrue(utils.match_expected("123", 2, "len_gt")) - self.assertTrue(utils.match_expected("123", 3, "len_ge")) - self.assertTrue(utils.match_expected("123", 4, "len_lt")) - self.assertTrue(utils.match_expected("123", 3, "len_le")) - self.assertTrue(utils.match_expected(1, 2, "lt")) self.assertTrue(utils.match_expected(1, 1, "le")) self.assertTrue(utils.match_expected(2, 1, "gt")) self.assertTrue(utils.match_expected(1, 1, "ge")) + self.assertTrue(utils.match_expected(123, "123", "ne")) + + self.assertTrue(utils.match_expected("123", 3, "len_eq")) + self.assertTrue(utils.match_expected("123", 2, "len_gt")) + self.assertTrue(utils.match_expected("123", 3, "len_ge")) + self.assertTrue(utils.match_expected("123", 4, "len_lt")) + self.assertTrue(utils.match_expected("123", 3, "len_le")) self.assertTrue(utils.match_expected("123abc456", "3ab", "contains")) + self.assertTrue(utils.match_expected(['1', '2'], "1", "contains")) + self.assertTrue(utils.match_expected({'a':1, 'b':2}, "a", "contains")) self.assertTrue(utils.match_expected("3ab", "123abc456", "contained_by")) - self.assertTrue(utils.match_expected("123abc456", "^123.*456$", "regex")) + self.assertTrue(utils.match_expected("123abc456", "^123\w+456$", "regex")) with self.assertRaises(exception.ValidationError): utils.match_expected("123abc456", "^12b.*456$", "regex") with self.assertRaises(exception.ParamsError): utils.match_expected(1, 2, "not_supported_comparator") - self.assertTrue(utils.match_expected("2017-06-29 17:29:58", 19, "str_len")) - self.assertTrue(utils.match_expected("2017-06-29 17:29:58", "19", "str_len")) - self.assertTrue(utils.match_expected("abc123", "ab", "startswith")) self.assertTrue(utils.match_expected("123abc", 12, "startswith")) self.assertTrue(utils.match_expected(12345, 123, "startswith"))