Exemplo n.º 1
0
        def _add_test(test_runner, test_dict):
            """ add test to testcase.
            """
            def test(self):
                try:
                    test_runner.run_test(test_dict)
                except exceptions.MyBaseFailure as ex:
                    self.fail(str(ex))
                finally:
                    self.meta_datas = test_runner.meta_datas

            if "config" in test_dict:
                # run nested testcase
                test.__doc__ = test_dict["config"].get("name")
                variables = test_dict["config"].get("variables", {})
            else:
                # run api test
                test.__doc__ = test_dict.get("name")
                variables = test_dict.get("variables", {})

            if isinstance(test.__doc__, parser.LazyString):
                parsed_variables = parser.parse_variables_mapping(variables,
                                                                  ignore=True)
                test.__doc__ = parser.parse_lazy_data(test.__doc__,
                                                      parsed_variables)

            return test
Exemplo n.º 2
0
 def test_parse_tests_base_url_test_dict(self):
     tests_mapping = {
         'testcases': [{
             "config": {
                 'name': '',
                 "base_url": "$host1",
                 'variables': {
                     "host1": "https://debugtalk.com"
                 }
             },
             "teststeps": [{
                 'name': 'testcase1',
                 "base_url": "$host2",
                 "variables": {
                     "host2": "https://apiautotest.org"
                 },
                 'request': {
                     'url': '/api1',
                     'method': 'GET'
                 }
             }]
         }]
     }
     parsed_testcases = parser.parse_tests(tests_mapping)
     test_dict = parsed_testcases[0]["teststeps"][0]
     parsed_test_dict = parser.parse_lazy_data(test_dict,
                                               test_dict["variables"])
     self.assertEqual(parsed_test_dict["base_url"],
                      "https://apiautotest.org")
Exemplo n.º 3
0
 def test_parse_tests_variable_with_function(self):
     tests_mapping = {
         "project_mapping": {
             "functions": {
                 "sum_two": sum_two,
                 "gen_random_string": gen_random_string
             }
         },
         'testcases': [{
             "config": {
                 'name': '',
                 "base_url": "$host1",
                 'variables': {
                     "host1": "https://debugtalk.com",
                     "var_a": "${gen_random_string(5)}",
                     "var_b": "$var_a"
                 }
             },
             "teststeps": [{
                 'name': 'testcase1',
                 "base_url": "$host2",
                 "variables": {
                     "host2": "https://apiautotest.org",
                     "num3": "${sum_two($num2, 4)}",
                     "num2": "${sum_two($num1, 3)}",
                     "num1": "${sum_two(1, 2)}",
                     "str1": "${gen_random_string(5)}",
                     "str2": "$str1"
                 },
                 'request': {
                     'url': '/api1/?num1=$num1&num2=$num2&num3=$num3',
                     'method': 'GET'
                 }
             }]
         }]
     }
     parsed_testcases = parser.parse_tests(tests_mapping)
     test_dict = parsed_testcases[0]["teststeps"][0]
     variables = parser.parse_variables_mapping(test_dict["variables"])
     self.assertEqual(variables["num3"], 10)
     self.assertEqual(variables["num2"], 6)
     parsed_test_dict = parser.parse_lazy_data(test_dict, variables)
     self.assertEqual(parsed_test_dict["base_url"],
                      "https://apiautotest.org")
     self.assertEqual(parsed_test_dict["request"]["url"],
                      "/api1/?num1=3&num2=6&num3=10")
     self.assertEqual(variables["str1"], variables["str2"])
Exemplo n.º 4
0
 def eval_content(self, content):
     """ evaluate content recursively, take effect on each variable and function in content.
         content may be in any data structure, include dict, list, tuple, number, string, etc.
     """
     return parser.parse_lazy_data(content, self.test_variables_mapping)