def __init__(self, testset, variables_mapping=None, http_client_session=None): super(TestSuite, self).__init__() self.config_dict = testset.get("config", {}) variables = self.config_dict.get("variables", []) variables_mapping = variables_mapping or {} self.config_dict["variables"] = utils.override_variables_binds( variables, variables_mapping) parameters = self.config_dict.get("parameters", []) cartesian_product_parameters = testcase.parse_parameters( parameters, self.config_dict["path"]) or [{}] for parameter_mapping in cartesian_product_parameters: if parameter_mapping: self.config_dict["variables"] = utils.override_variables_binds( self.config_dict["variables"], parameter_mapping) self.test_runner = runner.Runner(self.config_dict, http_client_session) testcases = testset.get("testcases", []) self._add_tests_to_suite(testcases)
def test_parse_parameters_raw_list(self): parameters = [ {"user_agent": ["iOS/10.1", "iOS/10.2", "iOS/10.3"]}, {"username-password": [("user1", "111111"), ("test2", "222222")]} ] cartesian_product_parameters = testcase.parse_parameters(parameters) self.assertEqual( len(cartesian_product_parameters), 3 * 2 )
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") cartesian_product_parameters = testcase.parse_parameters( parameters, testset_path) self.assertEqual(len(cartesian_product_parameters), 2 * 2)
def test_parse_parameters_parameterize(self): parameters = [{ "app_version": "${parameterize(app_version.csv)}" }, { "username-password": "******" }] testset_path = os.path.join(os.getcwd(), "tests/data/demo_parameters.yml") cartesian_product_parameters = testcase.parse_parameters( parameters, testset_path) self.assertEqual(len(cartesian_product_parameters), 2 * 3)
def test_parse_parameters_mix(self): parameters = [{ "user_agent": ["iOS/10.1", "iOS/10.2", "iOS/10.3"] }, { "app_version": "${gen_app_version()}" }, { "username-password": "******" }] testset_path = os.path.join(os.getcwd(), "tests/data/demo_parameters.yml") cartesian_product_parameters = testcase.parse_parameters( parameters, testset_path) self.assertEqual(len(cartesian_product_parameters), 3 * 2 * 3)
def test_parse_parameters_raw_list(self): parameters = [{ "user_agent": ["iOS/10.1", "iOS/10.2", "iOS/10.3"] }, { "username-password": [("user1", "111111"), ["test2", "222222"]] }] cartesian_product_parameters = testcase.parse_parameters(parameters) self.assertEqual(len(cartesian_product_parameters), 3 * 2) self.assertEqual(cartesian_product_parameters[0], { 'user_agent': 'iOS/10.1', 'username': '******', 'password': '******' })
def test_parse_parameters_raw_list(self): parameters = [ {"user_agent": ["iOS/10.1", "iOS/10.2", "iOS/10.3"]}, {"username-password": [("user1", "111111"), ["test2", "222222"]]} ] cartesian_product_parameters = testcase.parse_parameters(parameters) self.assertEqual( len(cartesian_product_parameters), 3 * 2 ) self.assertEqual( cartesian_product_parameters[0], {'user_agent': 'iOS/10.1', 'username': '******', 'password': '******'} )
def _get_parametered_variables(self, variables, parameters): """ parameterize varaibles with parameters """ cartesian_product_parameters = testcase.parse_parameters( parameters, self.testset_file_path) or [{}] parametered_variables_list = [] for parameter_mapping in cartesian_product_parameters: parameter_mapping = parameter_mapping or {} variables = utils.override_variables_binds(variables, parameter_mapping) parametered_variables_list.append(variables) return parametered_variables_list
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" ) cartesian_product_parameters = testcase.parse_parameters( parameters, testset_path ) self.assertEqual( len(cartesian_product_parameters), 2 * 2 )
def test_parse_parameters_parameterize(self): parameters = [ {"app_version": "${parameterize(app_version.csv)}"}, {"username-password": "******"} ] testset_path = os.path.join( os.getcwd(), "tests/data/demo_parameters.yml" ) cartesian_product_parameters = testcase.parse_parameters( parameters, testset_path ) self.assertEqual( len(cartesian_product_parameters), 2 * 3 )
def test_parse_parameters_mix(self): parameters = [ {"user_agent": ["iOS/10.1", "iOS/10.2", "iOS/10.3"]}, {"app_version": "${gen_app_version()}"}, {"username-password": "******"} ] testset_path = os.path.join( os.getcwd(), "tests/data/demo_parameters.yml" ) cartesian_product_parameters = testcase.parse_parameters( parameters, testset_path ) self.assertEqual( len(cartesian_product_parameters), 3 * 2 * 3 )
def _get_parametered_variables(self, variables, parameters): """ parameterize varaibles with parameters """ cartesian_product_parameters = testcase.parse_parameters( parameters, self.testset_file_path ) or [{}] parametered_variables_list = [] for parameter_mapping in cartesian_product_parameters: parameter_mapping = parameter_mapping or {} variables = utils.override_variables_binds( variables, parameter_mapping ) parametered_variables_list.append(variables) return parametered_variables_list
def _get_parametered_variables(self, variables, parameters, parser_handle=None): """ parameterize varaibles with parameters """ cartesian_product_parameters = testcase.parse_parameters( parameters, self.testset_file_path, parser_handle #modified by zhengchun, 解析动态加载函数 ) or [{}] parametered_variables_list = [] for parameter_mapping in cartesian_product_parameters: parameter_mapping = parameter_mapping or {} variables = utils.override_variables_binds(variables, parameter_mapping) parametered_variables_list.append(variables) return parametered_variables_list