Beispiel #1
0
 def json_format(json_dict):
     """
     功能:json字典 --> 带缩进格式的json字符串
     :param json_dict: json字典
     :return: 带缩进格式的json字符串
     """
     validator.check_paramType_dict(json_dict)
     return json.dumps(json_dict, sort_keys=True, indent=4, ensure_ascii=False)
Beispiel #2
0
    def _parseYaml_params_parameterize(self, http_params, module_key):
        """
        功能:生成scn的参数化模板
        :param http_params:
        :return:
        """

        validator.check_paramType_dict(http_params)

        parameterize_func_list = []
        if http_params:
            for param in http_params.keys():
                parameterize_func_list.append("{0} = testdata.random_{1}_{0}()".format(param, module_key))

        return "\n            ".join(parameterize_func_list)
Beispiel #3
0
    def _parseYaml_params_eqSelf(self, http_params):
        """
        功能:处理http的参数
            如果param:["listPage", "listSize", "deviceName"]
            则返回结果:listPage=listPage, listSize=listSize, deviceName=deviceName
        :param http_params:
        :return:
        """

        validator.check_paramType_dict(http_params)

        api_params_list_eqNone = []
        if http_params:
            for param in http_params.keys():
                api_params_list_eqNone.append("{0}={0},".format(param))

        return "\n\t\t\t\t".join(api_params_list_eqNone)
Beispiel #4
0
    def _parseYaml_params_addPrefixEdit_eqNone(self, http_params):
        """
        功能:处理http的参数
            如果param:["listPage", "listSize", "deviceName"]
            则返回结果:edit_listPage=None, edit_listSize=None, edit_deviceName=None
        :param http_params:
        :return:
        """

        validator.check_paramType_dict(http_params)

        api_params_list_eqNone = []
        if http_params:
            for param in http_params.keys():
                api_params_list_eqNone.append("edit_{}=None".format(param))

        return ", ".join(api_params_list_eqNone)
Beispiel #5
0
    def _parseYaml_params_responseApiDict(self, http_params):
        """
        功能:生成scn的返回信息模板

        :param http_params:
        :return:
        """

        validator.check_paramType_dict(http_params)

        parameterize_func_list = []
        if http_params:
            for param in http_params.keys():

                parameterize_func_list.append("if {0} is not None: info_dict.setdefault('{0}', {0})".format(param))

        return "\n            ".join(parameterize_func_list)
Beispiel #6
0
    def _parseYaml_params_request(self, http_params):
        """
        功能:处理http的参数
            如果param:["listPage", "listSize", "deviceName"]
            则返回结果:
                    http_data["listPage"]: listPage,
			        http_data["listSize"]: listSize,
			        http_data["deviceName"]: deviceName,
        :param http_params:
        :return:
        """

        validator.check_paramType_dict(http_params)

        api_params_list = []
        if http_params:
            for param in http_params.keys():
                api_params_list.append('http_data["{0}"]: {0},'.format(param))

        return "\n\t\t\t".join(api_params_list)
Beispiel #7
0
    def base_filter_data(self, data: dict):
        """
        功能:移除data字典中value是None的key,
             如果value也是个字典,其中的None或""也会被移除。
        :param data: http请求参数,字典形式
        :return: 处理过的字典
        """

        validator.check_paramType_dict(data)

        keys = data.keys()
        keys_to_remove = []
        for k in keys:
            v = data[k]
            if v is None:
                keys_to_remove.append(k)

            if isinstance(data[k], dict):
                self.base_filter_data(data[k])

        for k in keys_to_remove:
            data.pop(k)

        return data
Beispiel #8
0
    def parse_csv_param(self, test_data: dict, module_key: str):
        """
        功能: 解析csv中的参数
        :param test_data: 一行字典形式的用例数据
        :param module_key:
        :return: 返回一个list
        """

        validator.check_paramType_dict(test_data)
        validator.check_paramType_str(module_key)

        csvKeys_list = test_data.keys()
        keywords_list = ["$", "$(", "(", ")"]

        generator_objs_list = test_data["generator_objs_list"] = list()

        for csvKey in csvKeys_list:
            value = test_data[csvKey]

            if not value:
                continue

            # 解析依赖字段
            if any(keyword in value for keyword in keywords_list):

                pattern = r"\$\((.*?)\)"
                c = re.compile(pattern, re.S)
                depend_fields_list = re.findall(c, value)
                # depend_fields_list 返回的是到所有$()中的内容
                print("depend_fields_list: {}".format(depend_fields_list))

                depend_values_list = []
                if depend_fields_list:
                    depend_fields_format = re.sub(r"\$\(.*?\)", r"{}", value)
                    for depend_field in depend_fields_list:
                        # 遍历每一个$()中匹配到的内容
                        print("depend_field:{}".format(depend_field))

                        depend_key = None
                        # 如果depend_field包含有点, 则有两种情况(有key和无key)
                        if "." in depend_field:
                            depend_field, depend_key = depend_field.split(".")
                            if not depend_key:
                                depend_key = csvKey

                        func_name = "depend_{}".format(depend_field)
                        generator_obj = self._get_depend_param(func_name)

                        generator_objs_list.append(generator_obj)

                        depend_param = generator_obj.__next__()
                        print(depend_param)

                        if not isinstance(depend_param, dict):
                            depend_values_list.append(depend_param)
                        else:
                            if not depend_key:
                                depend_key = csvKey

                            depend_param = depend_param.get(depend_key)

                            if not depend_param:
                                raise Exception(
                                    "依赖字典中的key不存在:{}".format(depend_key))
                            depend_values_list.append(depend_param)

                    # 待填充列表: 对应所有实际在{}中填充的值
                    print("depend_values_list: {}".format(depend_values_list))
                    value = depend_fields_format.format(*depend_values_list)

                    # 解析列表
                    if value.startswith("["):
                        if not value.endswith("]"):
                            raise CsvContentException(
                                "这不是一个列表字符串: {}".format(value))
                        try:
                            value = eval(value)
                            test_data[csvKey] = value
                            continue
                        except:
                            raise CsvContentException(
                                "这不是一个列表字符串: {}".format(value))

                    # 解析字典
                    if value.startswith("{"):
                        if not value.endswith("}"):
                            raise CsvContentException(
                                "这不是一个字典字符串: {}".format(value))
                        try:
                            tmp_value = eval(value)
                            test_data[csvKey] = tmp_value
                            continue
                        except:
                            raise CsvContentException(
                                "这不是一个字典字符串: {}".format(value))

                    test_data[csvKey] = value
                    continue
                else:
                    raise exceptions.CsvContentException(
                        "csv填写内容异常: {}".format(value))

            if not isinstance(value, str):
                continue

            # 解析随机字段
            if isinstance(value, str) and (value.lower() == "r"
                                           or value.lower() == "random"):
                func_name = "random_{}_{}".format(module_key, csvKey)
                test_data[csvKey] = self._get_random_param(func_name)
                continue

            # 解析列表
            if value.startswith("["):
                if not value.endswith("]"):
                    raise CsvContentException("这不是一个列表字符串: {}".format(value))
                try:
                    value = eval(value)
                    test_data[csvKey] = value
                    continue
                except:
                    raise CsvContentException("这不是一个列表字符串: {}".format(value))

            # 解析字典
            if value.startswith("{"):
                if not value.endswith("}"):
                    raise CsvContentException("这不是一个字典字符串: {}".format(value))
                try:
                    tmp_value = eval(value)
                    test_data[csvKey] = tmp_value
                    continue
                except:
                    raise CsvContentException("这不是一个字典字符串: {}".format(value))

            # 解析空字符串
            if value in ["e", "empty"]:
                test_data[csvKey] = ""
                continue

            # 解析布尔值False
            if value in ["False", "false", "f", "F"]:
                test_data[csvKey] = False
                continue

            # 解析布尔值True
            if value in ["True", "true", "t", "T"]:
                test_data[csvKey] = True
                continue

        return test_data