コード例 #1
0
ファイル: context.py プロジェクト: zdmd/HttpRunner
 def import_module_items(self, imported_module):
     """ import module functions and variables and bind to testset context
     """
     module_mapping = loader.load_python_module(imported_module)
     self.__update_context_functions_config("testset",
                                            module_mapping["functions"])
     self.bind_variables(module_mapping["variables"], "testset")
コード例 #2
0
ファイル: test_loader.py プロジェクト: kfusac/MyHttpRunner
    def test_get_module_item_variables(self):
        from tests import confcustom
        module_mapping = loader.load_python_module(confcustom)

        SECRET_KEY = loader.get_module_item(module_mapping, 'variables',
                                            'SECRET_KEY')
        assert validator.is_variable(('SECRET_KEY', SECRET_KEY))
        assert SECRET_KEY == 'MyHttpRunner'
コード例 #3
0
ファイル: test_loader.py プロジェクト: kfusac/HttpRunner
    def test_get_module_item_functions(self):
        from httprunner import utils
        module_mapping = loader.load_python_module(utils)

        gen_md5 = loader.get_module_item(module_mapping, "functions", "gen_md5")
        self.assertTrue(validator.is_function(("gen_md5", gen_md5)))
        self.assertEqual(gen_md5("abc"), "900150983cd24fb0d6963f7d28e17f72")

        with self.assertRaises(exceptions.FunctionNotFound):
            loader.get_module_item(module_mapping, "functions", "gen_md4")
コード例 #4
0
ファイル: test_loader.py プロジェクト: zdmd/HttpRunner
    def test_get_module_item_variables(self):
        from tests import debugtalk
        module_mapping = loader.load_python_module(debugtalk)

        SECRET_KEY = loader.get_module_item(module_mapping, "variables",
                                            "SECRET_KEY")
        self.assertTrue(validator.is_variable(("SECRET_KEY", SECRET_KEY)))
        self.assertEqual(SECRET_KEY, "DebugTalk")

        with self.assertRaises(exceptions.VariableNotFound):
            loader.get_module_item(module_mapping, "variables", "SECRET_KEY2")
コード例 #5
0
ファイル: test_loader.py プロジェクト: kfusac/MyHttpRunner
    def test_get_module_item_functions(self):
        from httprunner import utils
        module_mapping = loader.load_python_module(utils)

        get_uniform_comparator = loader.get_module_item(
            module_mapping, 'functions', 'get_uniform_comparator')
        assert validator.is_function(("get_uniform_comparator",
                                      get_uniform_comparator))
        assert get_uniform_comparator('==') == 'equals'

        with pytest.raises(exceptions.FunctionNotFound):
            loader.get_module_item(module_mapping, 'functions', 'gen_md4')
コード例 #6
0
    def test_get_module_item_functions(self):
        from httprunner import utils
        module_mapping = loader.load_python_module(utils)

        get_uniform_comparator = loader.get_module_item(
            module_mapping, "functions", "get_uniform_comparator")
        self.assertTrue(
            validator.is_function(
                ("get_uniform_comparator", get_uniform_comparator)))
        self.assertEqual(get_uniform_comparator("=="), "equals")

        with self.assertRaises(exceptions.FunctionNotFound):
            loader.get_module_item(module_mapping, "functions", "gen_md4")
コード例 #7
0
    def test_get_module_item_variables(self):
        dot_env_path = os.path.join(os.getcwd(), "tests", ".env")
        loader.load_dot_env_file(dot_env_path)

        from tests import debugtalk
        module_mapping = loader.load_python_module(debugtalk)

        SECRET_KEY = loader.get_module_item(module_mapping, "variables",
                                            "SECRET_KEY")
        self.assertTrue(validator.is_variable(("SECRET_KEY", SECRET_KEY)))
        self.assertEqual(SECRET_KEY, "DebugTalk")

        with self.assertRaises(exceptions.VariableNotFound):
            loader.get_module_item(module_mapping, "variables", "SECRET_KEY2")
コード例 #8
0
 def test_parse_parameters_custom_function(self):
     parameters = [{
         "app_version": "${gen_app_version()}"
     }, {
         "username-password": "******"
     }]
     testset_path = os.path.join(os.getcwd(),
                                 "tests/data/demo_parameters.yml")
     from tests import debugtalk
     debugtalk_module = loader.load_python_module(debugtalk)
     cartesian_product_parameters = parser.parse_parameters(
         parameters, debugtalk_module["variables"],
         debugtalk_module["functions"])
     self.assertEqual(len(cartesian_product_parameters), 2 * 2)
コード例 #9
0
ファイル: test_utils.py プロジェクト: zongfangfang/HttpRunner
    def current_validators(self):
        from httprunner import built_in
        module_mapping = loader.load_python_module(built_in)
        functions_mapping = module_mapping["functions"]

        functions_mapping["equals"](None, None)
        functions_mapping["equals"](1, 1)
        functions_mapping["equals"]("abc", "abc")
        with self.assertRaises(AssertionError):
            functions_mapping["equals"]("123", 123)

        functions_mapping["less_than"](1, 2)
        functions_mapping["less_than_or_equals"](2, 2)

        functions_mapping["greater_than"](2, 1)
        functions_mapping["greater_than_or_equals"](2, 2)

        functions_mapping["not_equals"](123, "123")

        functions_mapping["length_equals"]("123", 3)
        functions_mapping["length_greater_than"]("123", 2)
        functions_mapping["length_greater_than_or_equals"]("123", 3)

        functions_mapping["contains"]("123abc456", "3ab")
        functions_mapping["contains"](['1', '2'], "1")
        functions_mapping["contains"]({'a':1, 'b':2}, "a")
        functions_mapping["contained_by"]("3ab", "123abc456")

        functions_mapping["regex_match"]("123abc456", "^123\w+456$")
        with self.assertRaises(AssertionError):
            functions_mapping["regex_match"]("123abc456", "^12b.*456$")

        functions_mapping["startswith"]("abc123", "ab")
        functions_mapping["startswith"]("123abc", 12)
        functions_mapping["startswith"](12345, 123)

        functions_mapping["endswith"]("abc123", 23)
        functions_mapping["endswith"]("123abc", "abc")
        functions_mapping["endswith"](12345, 45)

        functions_mapping["type_match"](580509390, int)
        functions_mapping["type_match"](580509390, "int")
        functions_mapping["type_match"]([], list)
        functions_mapping["type_match"]([], "list")
        functions_mapping["type_match"]([1], "list")
        functions_mapping["type_match"]({}, "dict")
        functions_mapping["type_match"]({"a": 1}, "dict")
コード例 #10
0
    def parse_tests(self, testcases, variables_mapping=None):
        """ parse testcases configs, including variables/parameters/name/request.

        Args:
            testcases (list): testcase list, with config unparsed.
            variables_mapping (dict): if variables_mapping is specified, it will override variables in config block.

        Returns:
            list: parsed testcases list, with config variables/parameters/name/request parsed.

        """
        self.exception_stage = "parse tests"
        variables_mapping = variables_mapping or {}

        parsed_testcases_list = []
        for testcase in testcases:
            # parse config parameters
            config_parameters = testcase.setdefault("config",
                                                    {}).pop("parameters", [])

            cartesian_product_parameters_list = parser.parse_parameters(
                config_parameters,
                self.project_mapping["debugtalk"]["variables"],
                self.project_mapping["debugtalk"]["functions"]) or [{}]

            for parameter_mapping in cartesian_product_parameters_list:
                testcase_dict = testcase
                config = testcase_dict.setdefault("config", {})

                testcase_dict["config"]["functions"] = {}

                # imported_module = importlib.reload(importlib.import_module('func_list.build_in'))
                # testcase_dict["config"]["functions"].update(loader.load_python_module(imported_module)["functions"])

                if config.get('import_module_functions'):
                    for f in config.get('import_module_functions'):
                        imported_module = importlib.reload(
                            importlib.import_module(f))
                        debugtalk_module = loader.load_python_module(
                            imported_module)
                        testcase_dict["config"]["functions"].update(
                            debugtalk_module["functions"])
                testcase_dict["config"]["functions"].update(
                    self.project_mapping["debugtalk"]["functions"])
                # self.project_mapping["debugtalk"]["functions"].update(debugtalk_module["functions"])
                raw_config_variables = config.get("variables", [])
                parsed_config_variables = parser.parse_data(
                    raw_config_variables,
                    self.project_mapping["debugtalk"]["variables"],
                    testcase_dict["config"]["functions"])

                # priority: passed in > debugtalk.py > parameters > variables
                # override variables mapping with parameters mapping
                config_variables = utils.override_mapping_list(
                    parsed_config_variables, parameter_mapping)
                # merge debugtalk.py module variables
                config_variables.update(
                    self.project_mapping["debugtalk"]["variables"])
                # override variables mapping with passed in variables_mapping
                config_variables = utils.override_mapping_list(
                    config_variables, variables_mapping)

                testcase_dict["config"]["variables"] = config_variables

                # parse config name
                testcase_dict["config"]["name"] = parser.parse_data(
                    testcase_dict["config"].get("name", ""), config_variables,
                    self.project_mapping["debugtalk"]["functions"])

                # parse config request
                testcase_dict["config"]["request"] = parser.parse_data(
                    testcase_dict["config"].get("request",
                                                {}), config_variables,
                    self.project_mapping["debugtalk"]["functions"])
                # put loaded project functions to config
                # testcase_dict["config"]["functions"] = self.project_mapping["debugtalk"]["functions"]
                parsed_testcases_list.append(testcase_dict)
        return parsed_testcases_list
コード例 #11
0
 def test_filter_module_functions(self):
     module_mapping = loader.load_python_module(loader)
     functions_dict = module_mapping["functions"]
     self.assertIn("load_python_module", functions_dict)
     self.assertNotIn("is_py3", functions_dict)
コード例 #12
0
ファイル: test_response.py プロジェクト: zhengmingf/learngit
 def setUp(self):
     module_mapping = loader.load_python_module(built_in)
     self.functions_mapping = module_mapping["functions"]
コード例 #13
0
 def test_load_python_module(self):
     pytest_module_items = loader.load_python_module(pytest)
     assert 'mark' in pytest_module_items['variables']
     assert 'skip' in pytest_module_items['functions']
コード例 #14
0
ファイル: test_loader.py プロジェクト: kfusac/MyHttpRunner
 def test_filter_module_functions(self):
     module_mapping = loader.load_python_module(loader)
     functions_dict = module_mapping['functions']
     assert 'load_python_module' in functions_dict
     assert 'is_py3' not in functions_dict