示例#1
0
class DependdentData:
    def __init__(self,case_id):
        self.case_id = case_id
        self.opera_excel = OperationExcel()
        self.data = GetData()

    #通过case_id去获取该case_id的整行数据
    def get_case_line_data(self):
        rows_data = self.opera_excel.get_rows_data(self.case_id)
        return rows_data

    #执行依赖测试,获取结果
    def run_dependent(self):
        run_method = RunMethod()
        row_num = self.opera_excel.get_rows_num(self.case_id)
        request_data = self.data.get_data_for_json(row_num)
        header = self.data.is_header(row_num)
        method = self.data.get_request_method(row_num)
        url = self.data.get_request_url(row_num)
        res = run_method.run_main(method,url,request_data,header)
        return json.loads(res)

    #根据以来的key去获取执行依赖测试case的相应,然后返回
    def get_data_for_key(self,row):
        depend_data = self.data.get_data_for_key(row)
        response_data = self.run_dependent()
        json_exe = parse(depend_data)
        madle = json_exe.find(response_data)
        return [math.value for math in madle][0]
示例#2
0
class OperaDependent():
    def __init__(self, case_id):
        self.case_id = case_id
        self.get_data = GetData()
        self.opera_excel = OperationExcel()
        self.run_case = RunMethod()

    def run_dependent_case(self):
        # 执行依赖的用例
        row_num = self.opera_excel.get_rows_num(self.case_id)
        url = self.get_data.get_url(row_num)
        method = self.get_data.get_method(row_num)
        cookie = self.get_data.is_cookie(row_num)
        if cookie == 'read':
            cookie = self.get_data.read_cookie()
        data = self.get_data.get_headers_data(row_num)
        res = self.run_case.run_main(url=url,
                                     headers=cookie,
                                     method=method,
                                     params=data,
                                     data=data)
        return json.loads(res.text)

    def get_data_for_key(self, row):
        depend_data = self.get_data.get_dependent_data(row)
        response_data = self.run_dependent_case()
        json_exe = parse(depend_data)
        madle = json_exe.find(response_data)
        return [math.value for math in madle][0]
示例#3
0
class DependData(object):
    '''有依赖的case处理模块,case2依赖case1点数据
	'''
    def __init__(self, case_id):
        self.case_id = case_id
        self.opera_excel = OperationExcel()
        self.get_data = GetData()

    # 获取目标行的数据
    def get_case_line_data(self):
        return self.opera_excel.get_rows_data(self.case_id)

    # 执行case1用例返回结果
    def run_denpend(self):
        run_method = RunMain()
        # 执行请求
        row_num = self.opera_excel.get_rows_num(self.case_id) + 1
        # print(row_num)
        request_json = self.get_data.get_data_json(row_num)
        url = self.get_data.get_request_url(row_num)
        # print(url)
        request_method = self.get_data.get_request_method(row_num)
        is_header = self.get_data.get_is_header(row_num)
        res = run_method.run_main(url, request_method, request_json, is_header)
        # 返回请求结果
        return res

    # 在case1用例返回的数据中,拿到case2所需要的字段的数据,返回
    def get_data_key(self, row):
        depend_data_key = self.get_data.get_depend_key(row)
        # print(depend_data_key)
        # 将str数据类型转换为json数据类型(dict字典)
        response_data = json.loads(self.run_denpend())
        # print(type(response_data))
        # 需要在json中匹配的字段规则
        jsonpath_expr = parse(depend_data_key)
        # 在json数据中查找规则字段 返回一个list
        male = jsonpath_expr.find(response_data)
        # 返回需要的对应字段中的内容
        return [match.value for match in male][0]
示例#4
0
class DepnedentData:
    def __init__(self, case_id):
        self.case_id = case_id
        self.operation = OperationExcel()
        self.data = GetData()

    # 根据case_id,获取整行的数据
    def get_case_line_data(self):
        self.operation.get_rows_data(self.case_id)

    # 执行依赖测试,获取结果
    def run_depnedent(self):
        run_method = RunMethod()
        row_num = self.operation.get_rows_num(self.case_id)  # 获取行号
        request_data = self.data.get_json_data(row_num)  # 获取请求数据
        method = self.data.get_request_method(row_num)  # 获取请求方法
        url = self.data.get_request_url(row_num)
        cookies = {"SESSION": "bdbd5d09-29c5-40f8-aa16-cae274c1c6cd"}
        cookie = self.data.get_cookies_value(row_num)
        if cookie == 'yes':
            get_cookie = OperationJson('../dataconfig/cookie.json')
            cooki = get_cookie.get_data('SESSION')
            cookies = {"SESSION": cooki}
            res = run_method.run_main(method, url, request_data,
                                      cookies)  # 发送请求
        else:
            res = run_method.run_main(method, url, request_data)
        return json.loads(res)

    # 根据依赖的key去获取,依赖测试case的响应,得到对应的字段并且返回
    def get_data_for_key(self, row):
        depent_data = self.data.get_depentent_key(row)  # 获取匹配的依赖数据
        response_data = self.run_depnedent()
        json_exe = parse(depent_data)  # 以depent_data去匹配字段
        madel = json_exe.find(response_data)
        return [math.value for math in madel]
示例#5
0
class DependData:
    def __init__(self, case_id):
        self.opera_excel = OperationExcel()
        self.case_id = case_id
        self.data = GetData()
        self.opera_db = OperaMysql()

    #通过caseid获取该case的整行数据
    def get_case_line_data(self):
        rows_data = self.opera_excel.get_rows_data(self.case_id)
        return rows_data

    #执行依赖case,获取接口返回结果
    def run_depend(self):
        run_method = RunMethod()
        row_num = self.opera_excel.get_rows_num(self.case_id)
        request_data = {
            'Head':
            '{"UserID":3,"TimeStamp":"1516156123","Sign":"FC7B4D3405863A6D06DC4D6961B708BF"}',
            'Data': self.data.get_data_for_json(row_num)
        }
        header = self.data.is_header(row_num)
        url = self.data.get_request_url(row_num)
        method = self.data.get_request_method(row_num)
        res = run_method.runmain(method, url, request_data, header)
        return json.loads(res)

    #根据依赖的key获取获取执行依赖测试case的响应数据然后返回给下一个接口的请求字段----难点
    def get_data_for_key(self, row):
        depend_data = self.data.get_depend_key(row)
        #拿到了依赖case的结果
        response_data = self.run_depend()
        print(type(response_data))
        response_data_dict = json.loads(response_data)
        print(type(response_data_dict))
        code = response_data_dict['result']['Code']
        if code == 0:
            #拿到RoomList
            roomlist = response_data_dict['result']['Result'][0]['RoomList']
            hotelid = response_data_dict['result']['Result'][0]['RoomList'][0][
                'HotelId']
            sessionid = response_data_dict['result']['Result'][0]['SessionId']
            pk = '64b7a5f65a2ac326070699ba651691cc'
            rateinfoList = []
            rate_code_list = []
            attachment_key_list = []
            i = 0
            j = 0
            #遍历response_data_dict循环获取ratecode和attachmentkey
            for i in range(0, len(roomlist)):
                rateinfoList.append(roomlist[i]['RateInfoList'])
                # print(rateinfoList[0])
                for j in range(0, len(rateinfoList[i])):
                    rate_code_list.append(
                        roomlist[i]['RateInfoList'][j]['RateCode'])
                    attachment_key_list.append(
                        roomlist[i]['RateInfoList'][j]['AttachmentKey'])
                    listra = [
                        (sessionid, hotelid,
                         roomlist[i]['RateInfoList'][j]['RateCode'],
                         roomlist[i]['RateInfoList'][j]['AttachmentKey'], pk)
                    ]
                    sqlinsert = """insert into test.RatePolicy(SessionId,HotelId,RateCode,attchment,pk) VALUES (%s,%s,%s,%s,%s)"""
                    self.opera_db.insert_many_db(sqlinsert, listra)

        #在结果集中找字段
        #depend_data_a = ["result"]["Result"][0]["roomlist"][0]["RateInfoList"][0][depend_data]
        #json_exe = parse('result.Result[*].roomlist[*].RateInfoList[*].RateCode')
        #结果集
        #rate_code_list = [match.value for match in parse('result.Result[0].RoomList[0].RateInfoList[*].RateCode').find(response_data_dict)]
        #返回list的第一个结果

            print(rate_code_list)
            print(attachment_key_list)
            return [rate_code_list, attachment_key_list, sessionid]
        else:
            return None