Esempio n. 1
0
class DependentData(object):
    def __init__(self, case_id):
        self.opexcel = OperationExcel()
        self.getdata = GetData()
        self.case_id = case_id
        self.runmethod = RunMethod()

    def get_case_line_data(self):
        row_data = self.opexcel.from_case_id_get_row_data(self.case_id)
        return row_data

    def rundependent(self):
        row_num = self.opexcel.from_case_id_get_row_num(self.case_id)
        request_data = self.getdata.get_data_for_json(row_num)
        url = self.getdata.get_url(row_num)
        method = self.getdata.get_request_method(row_num)
        header = self.getdata.is_header(row_num)
        res = self.runmethod.run_main(url, method, request_data, header)
        return res

    #在依赖response中查找依赖数据
    def get_data_for_key(self, row):
        depend_data = self.getdata.get_data_depend(row)
        response_data = self.rundependent()
        print(depend_data)
        print("************************")
        print(response_data)
        p_depend_data = parse(depend_data)
        madle = p_depend_data.find(response_data)
        return [math.value for math in madle][0]
Esempio n. 2
0
 def __init__(self):
     self.run_method = RunMethod()
     self.data = GetData()
     self.common_util = CommonUtil()
     self.send_email = SendEmail()
     self.excel = OperationExcel()
     self.sheet_obj = self.excel.get_data()
Esempio n. 3
0
class DependentData:
    def __init__(self, case_id):
        self.case_id = case_id
        self.opera_excel = OperationExcel()
        self.data = GerData()

    #通过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):
        httpclient = HttpClient()
        row_num = self.opera_excel.get_row_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)
        result = httpclient.request(method, url, request_data)
        return json.loads(result)

    #根据依赖的key去获取执行依赖测试case的响应,然后返回
    def get_data_for_key(self, row):
        depend_data = self.data.get_depend_key(row)
        response_data = self.run_dependent()
        print(type(depend_data), "depend_data:", depend_data)
        print(type(response_data), "response_data:", response_data)
        json_exe = parse(depend_data)
        madle = json_exe.find(response_data)
        return [math.value for math in madle][0]
Esempio n. 4
0
    def __init__(self, request_data, case_depend: list, data_depend: list,
                 filed_depend: list):
        """

        :param case_depend: ['sheet_name','case_id']
        :param data_depend: ['store.book.[2].title','store.book.[3].title']
        :param filed_depend:['parent_key2.[0].child_key11','parent_key2.[1].child_key22']
        """
        self.request_data = request_data
        self.case_depend = case_depend
        self.sheet_name = self.case_depend[0]
        self.case_id = self.case_depend[1]
        self.data_depend = data_depend
        self.filed_depend = filed_depend
        self.operation_excel = OperationExcel()
        self.data = GetData()
Esempio n. 5
0
 def __init__(self):
     # self.case_id = case_id
     self.get_data = GetData()
     self.run_method = RunMethod()
     self.com_util = CommonUtil()
     self.opera_excel = OperationExcel()
Esempio n. 6
0
 def __init__(self):
     self.opera_excel = OperationExcel()
     self.sheet = self.opera_excel.get_data()
Esempio n. 7
0
class GetData():
    def __init__(self, filename=None, sheet_id=None):
        self.opera_excel = OperationExcel(filename, sheet_id)
        self.com_util = CommonUtil()
        self.op_excel_value = op_excel_value.OpValue()
        self.get_conf = GetConf()

    def trans_value(self, v):
        return self.com_util.value_trans(v)

    # 获取当前 sheet name
    def get_current_sheet_name(self):
        return self.trans_value(self.opera_excel.get_sheet_name())

    # 获取excel行数
    def get_case_lines(self):
        return self.trans_value(self.opera_excel.get_sheet_rows_num())

    # 通过caseidname 获取行号
    def get_case_row_by_idname(self, idname):
        col_num = 1
        for i in self.opera_excel.get_col_value(1):
            if idname == i:
                return col_num
            col_num += 1
        return False

    # 获取case id
    def get_case_id_name(self, row):
        col = data_config.get_id_col()
        case_id = self.opera_excel.get_cell_value(row, col)
        if case_id:
            return self.trans_value(case_id)
        else:
            return ""

    #获取模块名称
    def get_mod_name(self, row):
        col = data_config.get_modname_col()
        modname = self.opera_excel.get_cell_value(row, col)
        return self.trans_value(modname)

    #获取api接口名称
    def get_apiname(self, row):
        col = data_config.get_apiname_col()
        apiname = self.opera_excel.get_cell_value(row, col)
        return self.trans_value(apiname)

    #获取url 请求地址
    def get_url(self, row):
        col = data_config.get_url_col()
        url = self.opera_excel.get_cell_value(row, col)
        if url:
            return self.trans_value(url)
        else:
            return ""

    def get_url_final(self, row):
        url = self.get_url(row)
        if url:
            url = str(
                self.get_conf.read_conf_value_toexcel("urlprefix")).replace(
                    '"', '') + str(url)
        return url

    # 是个否运行
    def get_is_run(self, row):
        flag = None
        col = data_config.get_run_col()
        is_run = self.opera_excel.get_cell_value(row, col)
        if str(is_run).lower() == "yes" or str(is_run).lower() == "y":
            flag = True
        else:
            flag = False
        return self.trans_value(flag)

    # 获取请求的方式
    def get_request_method(self, row):
        col = data_config.get_request_method_col()
        method = self.opera_excel.get_cell_value(row, col)
        return self.trans_value(method)

    #获取 cookie值
    def get_is_cookie(self, row):
        col = data_config.get_cookie_col()
        is_cookie = self.opera_excel.get_cell_value(row, col)
        return self.trans_value(is_cookie)

    # # 是否携带 header
    # def get_is_header(self, row):
    #     col = data_config.get_header_col()
    #     is_header = self.opera_excel.get_cell_value(row, col)
    #     if str(is_header).lower() == "yes":
    #         return self.trans_value(data_config.get_header_info())
    #     else:
    #         return None

    ##获取header值
    def get_header_info(self, row):
        col = data_config.get_header_col()
        headerinfo = self.opera_excel.get_cell_value(row, col)
        if str(headerinfo) == "" or headerinfo == None:
            return {}
        else:
            return json.loads(headerinfo)

    # 获取 dependent caseid name
    def get_dependent_caseid(self, row):
        col = data_config.get_dependent_caseid_col()
        caseid = self.opera_excel.get_cell_value(row, col)
        if caseid == "":
            return None
        else:
            return caseid

    # 获取dependent data 内容
    def get_dependent_data(self, row):
        col = data_config.get_dependent_data_col()
        dependent_data = self.opera_excel.get_cell_value(row, col)
        return dependent_data

    # 获取depent  filed字段内容
    def get_dependent_filed(self, row):
        col = data_config.get_dependent_filed_col()
        filed_data = self.opera_excel.get_cell_value(row, col)
        return filed_data

    # 获取请求数据
    def _get_request_data(self, row):
        col = data_config.get_request_data_col()
        data = self.opera_excel.get_cell_value(row, col)
        if data == "":
            return None

        return self.trans_value(data)

    # 通过关键字拿到 请求体,request_data数据
    def get_request_data_final(self, row):
        request_data = self._get_request_data(row)  #请求数据,关键字

        if str(request_data).startswith("json_"):  #如果json_开头则进行json获取
            opera_json = OperationJson()
            request_data = opera_json.get_value(request_data)
            return self.trans_value(request_data)
        elif str(request_data) != "":
            request_data = self.op_excel_value.replace_value(
                request_data)  # 更新替换excel请求中带的变量
            return self.trans_value(
                request_data)  #如果不为空,不是json_开头,那么就替换变量再返回数据
        else:
            return None  #没有请求数据,则返回None

    #保存响应中的指定值(json获取方式)
    def get_save_value(self, row):
        col = data_config.get_save_value_col()
        savevalue = self.opera_excel.get_cell_value(row, col)
        if str(savevalue) == "" or savevalue == None:
            return None
        else:
            return str(savevalue)

    # 获取预期响应结果
    def _get_expect_result(self, row):
        col = data_config.get_expect_result_col()
        expect_value = self.opera_excel.get_cell_value(row, col)
        if expect_value == "":
            return None
        return self.trans_value(expect_value)

    def get_expect_result_final(self, row):
        '''
        获取预期结果,返回数组类型
        :param row:
        :return: type:list
        '''
        expect_result = self._get_expect_result(row)
        if str(expect_result).startswith("json_"):  # 如果json_开头则进行json获取
            opera_json = OperationJson()
            expect_data = opera_json.get_value(expect_result)
            print('通过json配置的预期结果断言###值为:', expect_data)
            return list(str(self.trans_value(expect_data)).split(','))
        elif str(expect_result) != "":
            expect_data = self.op_excel_value.replace_value(
                expect_result)  # 更新替换excel请求中带的变量
            return list(str(self.trans_value(expect_data)).split(
                ','))  # 如果不为空,不是json_开头,那么就替换变量再返回数据
        elif str(expect_result) == "" or expect_result == None:
            return []  # 没有请求数据,则返回None
        else:
            return ["ERROR_FOUND_EXPECT_RESULT"]

    #获取预期响应code
    def get_expect_code(self, row):
        col = data_config.get_except_code_col()
        expect_code = self.opera_excel.get_cell_value(row, col)
        if expect_code == "":
            return 200
        return self.trans_value(expect_code)

    #获取数据库校验语句
    def get_dbcheck_sql(self, row):
        col = data_config.get_dbcheck_col()
        dbchecksql = self.opera_excel.get_cell_value(row, col)
        if str(dbchecksql) != "" or str(dbchecksql) != None:
            return str(dbchecksql)
        else:
            return None

    #获取备注信息
    def get_comment_info(self, row):
        col = data_config.get_comment_col()
        commentinfo = self.opera_excel.get_cell_value(row, col)
        if str(commentinfo) != "" or str(commentinfo) != None:
            return str(commentinfo)
        else:
            return ""

    # 判断是否需要 依赖case
    def get_is_dependent(self, row):
        data = self.get_dependent_caseid(row)
        if data:
            return True
        else:
            return False

    #写 当前结果到excel
    def write_current_result(self, row, value):
        col = data_config.get_current_result_col()
        writevalue = self.opera_excel.write_cell_value(row, col, value)
        if writevalue:
            return True
        else:
            return False

    #写 当前响应code到excel
    def write_current_code(self, row, value):
        col = data_config.get_current_code_col()
        writevalue = self.opera_excel.write_cell_value(row, col, value)
        if writevalue:
            return True
        else:
            return False

    #写 测试结果到excel
    def write_test_result(self, row, value):
        col = data_config.get_test_result_col()
        ## row,col,value,result(通过value来判断pass,fail,else 用于写不同的颜色)
        writevalue = self.opera_excel.write_cell_value(row,
                                                       col,
                                                       value,
                                                       result=value)
        if writevalue:
            return True
        else:
            return False
Esempio n. 8
0
 def __init__(self, filename=None, sheet_id=None):
     self.opera_excel = OperationExcel(filename, sheet_id)
     self.com_util = CommonUtil()
     self.op_excel_value = op_excel_value.OpValue()
     self.get_conf = GetConf()
Esempio n. 9
0
class DependentData:
    def __init__(self, request_data, case_depend: list, data_depend: list,
                 filed_depend: list):
        """

        :param case_depend: ['sheet_name','case_id']
        :param data_depend: ['store.book.[2].title','store.book.[3].title']
        :param filed_depend:['parent_key2.[0].child_key11','parent_key2.[1].child_key22']
        """
        self.request_data = request_data
        self.case_depend = case_depend
        self.sheet_name = self.case_depend[0]
        self.case_id = self.case_depend[1]
        self.data_depend = data_depend
        self.filed_depend = filed_depend
        self.operation_excel = OperationExcel()
        self.data = GetData()

    def update_json_data(self, key_expr: str, value: str):
        """
        将提取到的结果更新到 请求头 数据当中
        :param key_expr:请求头数据的key 'parent_key2.[0].child_key11'
        :param value: 从响应结果中获取到的值
        :return:
        """
        key = key_expr.split(".")
        key_length = len(key)
        get_json_data = self.request_data

        counter = 0
        while counter < key_length:
            key_value = key[counter]
            if key_value.startswith('[') and key_value.endswith(']'):
                key_value = eval(key_value[1:-1])
            if counter + 1 == key_length:
                get_json_data[key_value] = value
            else:
                get_json_data = get_json_data[key_value]
            counter = counter + 1
        return self.request_data

    def run_dependent(self):
        """执行依赖测试,获取结果"""
        # 通过sheet页名称读取对应sheet页的数据
        self.data.get_sheet_data(self.sheet_name)
        # 通过sheet_name和case_id获取行号
        row_num = self.operation_excel.get_rowNum_by_sheetName_and_caseId(
            self.sheet_name, self.case_id)

        url = self.data.get_request_url(row_num)
        method = self.data.get_request_method(row_num)
        request_data = self.data.get_request_data(self.sheet_name, row_num)

        headers = self.data.get_is_header(row_num)
        cookies = self.data.get_is_cookie(row_num)

        run_method = RunMethod()

        res = run_method.run_method(method, url, request_data, headers,
                                    cookies)
        return json.loads(res)

    def get_data_for_key(self):
        """根据依赖的key去获取执行依赖的case的响应,然后返回响应数据"""
        # 执行依赖测试,获取结果
        response_data = self.run_dependent()
        for request_key, response_key in zip(self.filed_depend,
                                             self.data_depend):
            json_path_expr_value = parse(response_key)
            # 根据依赖数据的json_path表达式从响应结果中提取依赖值
            var_value = [
                match.value
                for match in json_path_expr_value.find(response_data)
            ][0]
            # 将提取到的结果更新到 请求头 数据当中
            self.request_data = self.update_json_data(request_key, var_value)
        return self.request_data
Esempio n. 10
0
class DependentData:
    def __init__(self,case_id):
        self.case_id=case_id
        self.opera_excel=OperationExcel()
        self.datas=GetData()
        self.gettime=GetTime()

    def get_case_line_data(self):
        rows_data=self.opera_excel.get_rows_data(self.case_id)   #根据caseid获取excel整行数据

    def run_dependent(self):
        row_num=self.opera_excel.get_rows_num(self.case_id)
        url = self.datas.get_request_url(row_num)
        # print(url)
        method = self.datas.get_request_method(row_num)
        # print(method)
        headers = self.datas.get_header_for_json(row_num)
        # print(headers)
        # print(type(headers))
        data = self.datas.get_data_for_json(row_num)
        # print(data)
        # 获取预期结果值
        #excepts = self.datas.get_except_val(row_num)
        # 延迟发送
        times = self.datas.get_delaytime_mm(row_num)
        self.gettime.delaytime(times)
        # 获取cookies
        cookies = self.datas.get_is_cookie(row_num)
        if cookies != None:
            if cookies != "write":
                # 发送请求
                # print(headers)
                res = RunQuest(url, method, data, headers, cookies).res
                return  res
        res = RunQuest(url, method, data, headers).res
        #res=json.loads(res)
        return res

    #只根据依赖请求
    def get_is_req_sucess(self):
        res=self.run_dependent()
        time.sleep(1)
        print(self.case_id+"依赖请求:"+str(res))


    #根据依赖的key 获取依赖的case的响应中的值
    def get_data_for_key(self,row):
        depend_data=self.datas.get_depend_key(row) #获取响应依赖的数据
        depend_data=depend_data.split(":")
        res_data=self.run_dependent()   #获取响应的值
        if isinstance(res_data, dict):  # 判断是否请求成功
            # json_exe=parse(depend_data)
            # madle=json_exe.find(res_data)
            # return [math.value for math in madle][0]
            for_key_value=self.get_for_key(res_data,depend_data)
            if for_key_value !=None:
                return  for_key_value
            else:
                return  None

        else:
            return None


    def get_for_key(self,res_data, *keys):
        res_datas = res_data
        for ks in keys:
            for k in ks:
                #print(k)
                res_datas = self.get_for_key_value(res_datas, k)
                # print(res_datas)
        # print(res_datas)
        return  res_datas

    #判断是否存在
    def get_for_key_value(self,res_data, depend_data):
        try:
                json_exe = parse(depend_data)
                # print(json_exe)
                madle = json_exe.find(res_data)
                # print(madle)
                # print(type(madle))
                datas = [math.value for math in madle][0]
                #print(datas)
                # print(type(datas))
                return datas
        except:
                return None
Esempio n. 11
0
 def __init__(self):
     self.data = OperationExcel()
     self.dataconfig = GlobalVar()
Esempio n. 12
0
class DependentData(object):
    def __init__(self, case_id):
        self.case_id = case_id
        self.opera_excel = OperationExcel()
        self.data = GetData()
        self.run_method = RunMethod()

    '''通过case_id去获取该case_id的整行数据'''

    def get_case_line_data(self):
        try:
            rows_data = self.opera_excel.get_rows_data(self.case_id)
            return rows_data
        except Exception as e:
            logging.info("错误为:", e)

    '''执行依赖测试,获取结果'''

    def run_dependent(self):
        try:

            row_num = self.opera_excel.get_row_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 = self.run_method.run_main(method, url, request_data, header)

            # return res
            return json.loads(res)
        except Exception as e:
            logging.info("错误为:", e)

    '''根据依赖的key去获取执行依赖测试case的响应,
        然后返回,都要为字典格式,所以将上面的run_dependent函数的结果以字典的格式返回'''

    def get_data_for_key(self, row):
        try:
            # rows.[0].productID
            # depend_data是依赖的返回数据 rows.[0].productID
            depend_data = self.data.get_depend_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]

        except Exception as e:
            logging.info("错误为:", e)

    dic = {}

    # 把依赖数据保存到文件里
    def save_depend_value(self, res, depend_data, dict_key):

        res = json.loads(res)
        depend_data = list(depend_data.split(","))
        dict_key = list(dict_key.split(","))
        for i in range(len(dict_key)):
            try:
                json_exe = parse(depend_data[i])
                madle = json_exe.find(res)
                value = [math.value for math in madle][0]
                with open(depend_data_path, 'r', encoding='utf-8') as f:
                    depend_value = f.read()
                    if depend_value == "":
                        depend_value = "{}"
                    depend_value = json.loads(depend_value)
                    key = dict_key[i]
                    depend_value[key] = value

            except IndexError as e:
                logging.info("错误为:", e)
            finally:
                try:
                    with open(depend_data_path, 'w', encoding='utf-8') as f:
                        depend_value = json.dump(depend_value, f)

                        f.flush()
                except Exception as e:
                    logging.info("错误为:", e)
# _*_ coding: utf-8 _*_
# @Time    : 2020/4/9 19:54
# @Author  : Daisy
# @File    : test_login_books.py

import json
import pytest
from base.method import RequestMethod
from utils.operation_excel import OperationExcel, ExcelColumNameAll
from common.public import write_id_to_file, read_id_from_file

excel = OperationExcel(file_name='books_all.xlsx', file_dir='data')
rqst = RequestMethod()
print(excel.read_excel_data())


def get_dict(data, col_name):
    '''对请求参数/请求头为空进行处理,并把字符串转换成dict类型'''
    param = data[col_name]
    if len(param.strip()) == 0:
        pass
    else:
        return json.loads(param.strip())  # 反序列化,得到字典类型


def get_url(data, book_id):
    """如果要获取某本书籍信息,则需要替换bookID的值;否则获取全部书籍信息"""
    if book_id:
        url = data[ExcelColumNameAll.rqst_url].replace('{bookID}', book_id)
    else:
        url = data[ExcelColumNameAll.rqst_url]
Esempio n. 14
0
class GetData:
    def __init__(self):
        self.data = OperationExcel()
        self.dataconfig = GlobalVar()

    #获取总行数
    def get_case_lines(self):
        return self.data.get_rows()

    #获取是否执行case
    def get_is_run(self, row):
        flag = None
        col = self.dataconfig.get_run()
        runvalue = self.data.get_value(row, int(col))
        if runvalue == "yes":
            flag = True
        else:
            flag = False
        return flag

    # 获取获取header关键词
    def get_req_header(self, row):
        col = self.dataconfig.get_header()
        headervalue = self.data.get_value(row, int(col))
        if headervalue == "":
            return None
        return headervalue
        # if headervalue == "yes":
        #     return self.dataconfig.get_header_value()
        # else:
        #     return None

    # 根据关键词获取请求header的json内容
    def get_header_for_json(self, row):
        if self.get_req_header(row) != None:
            for_json = OperationJson(filename="../dataconfig/header.json")
            req_header = for_json.get_data(self.get_req_header(row))
            return req_header
        else:
            return None

    #获取是否获取cookie
    def get_is_cookie(self, row):
        col = self.dataconfig.get_cookies()
        cookievalue = self.data.get_value(row, int(col))
        if cookievalue == "write":
            return cookievalue
        elif cookievalue == "yes":
            self.getcookie = GetCookie()
            return self.getcookie.read_data()  #读取cookie
        else:
            return None

    #获取请求方式
    def get_request_method(self, row):
        col = self.dataconfig.get_method()
        req_methods = self.data.get_value(row, int(col))
        return req_methods

    #获取请求url
    def get_request_url(self, row):
        col = self.dataconfig.get_url()
        req_url = self.data.get_value(row, int(col))
        return req_url

    #获取请求数据的josn关键词
    def get_request_data(self, row):
        col = self.dataconfig.get_data()
        req_data = self.data.get_value(row, int(col))
        if req_data == "":
            return None
        return req_data

    #根据关键词获取请求数据的json内容
    def get_data_for_json(self, row):
        ecl_data = self.get_request_data(row)
        if self.get_request_data(row) != None:
            datas = ecl_data.split(":")
            if len(datas) > 1:
                for_json = OperationJson("../dataconfig/" + datas[0] + ".json")
                req_data = for_json.get_data(datas[1])
                return req_data
            else:
                print("请求数据格式不对!格式必须为 filename:jsonname")
                return None
        else:
            return None

    #获取预期结果
    def get_except_val(self, row):
        col = self.dataconfig.get_except()
        req_except = self.data.get_value(row, int(col))
        if req_except == "":
            return None
        return req_except

    #获取返回响应的依赖数据的key
    def get_depend_key(self, row):
        col = int(self.dataconfig.get_data_depend())  #获取列
        depend_key = self.data.get_value(row, col)
        if depend_key == "":
            return None
        else:
            return depend_key

    #判断是否有case依赖 获取依赖的case
    def is_depend(self, row):
        col = int(self.dataconfig.get_case_depend())  # 获取列
        depend_case_id = self.data.get_value(row, col)
        if depend_case_id == "":
            return None
        else:
            return depend_case_id

    #  获取请求数据的依赖key
    def get_depend(self, row):
        col = int(self.dataconfig.get_field_depend())  # 获取列
        data = self.data.get_value(row, col)
        if data == "":
            return None
        else:
            return data

    #  获取请求数据的依赖key
    def get_header_depend(self, row):
        col = int(self.dataconfig.get_header_depend())  # 获取列
        headers = self.data.get_value(row, col)
        if headers == "":
            return None
        else:
            return headers

    #写入实际结果
    def write_result(self, row, value):
        col = int(self.dataconfig.get_result())
        self.data.write_value(row, col, value)

    # 写入更新时间
    def write_update_time(self, row, value):
        col = int(self.dataconfig.get_update_time())
        self.data.write_value(row, col, value)

    #获取请求延迟时间 毫秒
    def get_delaytime_mm(self, row):
        col = int(self.dataconfig.get_delaytime())
        delayvalue = self.data.get_value(row, int(col))
        if delayvalue == "":
            return None
        else:
            return delayvalue

    #获取短信验证码
    def get_sms_value(self, cellphone):
        sql = "select code from driver_oauth where cellphone=" + cellphone
        self.dbs = ConnectDb()
        self.dbs.get_sms_db()
        sms = self.dbs.get_data_one(sql)
        print(sms)
        return sms
Esempio n. 15
0
 def __init__(self, filename=None, sheet_id=None):
     self.opera_excel = OperationExcel(filename, sheet_id)
Esempio n. 16
0
class GetData(object):
    def __init__(self, filename=None, sheet_id=None):
        self.opera_excel = OperationExcel(filename, sheet_id)

    def get_case_lines(self):
        return self.opera_excel.get_lines()

    def get_is_run(self, row):
        flag = None
        col = data_config.global_val.get_run()
        run_model = self.opera_excel.get_cell_value(row, int(col))
        if run_model == 'yes':
            flag = True
        else:
            flag = False
        return flag

    def is_cookie(self, row):
        col = data_config.global_val.get_cookie()
        cookie = self.opera_excel.get_cell_value(row, int(col))
        return cookie

    def is_header(self, row):
        col = data_config.global_val.get_header()
        header = self.opera_excel.get_cell_value(row, int(col))
        if header == 'yes':
            return data_config.global_val.get_header_value()
        else:
            return None

    def get_request_method(self, row):
        col = data_config.global_val.get_request_way()
        request_method = self.opera_excel.get_cell_value(row, int(col))
        return request_method

    def get_url(self, row):
        col = data_config.global_val.get_url()
        url = self.opera_excel.get_cell_value(row, int(col))
        return url

    def get_request_data(self, row):
        col = data_config.global_val.get_data()
        data = self.opera_excel.get_cell_value(row, int(col))
        if data == '':
            return None
        else:
            return data

    def get_data_for_json(self, row):
        self.opera_json = OperationJson()
        data_json = self.opera_json.get_data(self.get_request_data(row))
        return data_json

    def get_expect(self, row):
        col = data_config.global_val.get_expect()
        expect = self.opera_excel.get_cell_value(row, int(col))
        if expect == '':
            return None
        else:
            return expect

    def write_result(self, row, value):
        col = data_config.global_val.get_result()
        self.opera_excel.write_value(row, int(col), value)

    def get_data_depend(self, row):
        col = data_config.global_val.get_data_depend()
        data_depend = self.opera_excel.get_cell_value(row, int(col))
        if data_depend == "":
            return None
        else:
            return data_depend

    def is_depend(self, row):
        col = data_config.global_val.get_case_depend()
        case_depend = self.opera_excel.get_cell_value(row, int(col))
        if case_depend is not None:
            return case_depend
        else:
            return None

    def get_field_depend(self, row):
        col = data_config.global_val.get_field_depend()
        field_depend = self.opera_excel.get_cell_value(row, int(col))
        if field_depend is not None:
            return field_depend
        else:
            return None
Esempio n. 17
0
 def __init__(self,case_id):
     self.case_id=case_id
     self.opera_excel=OperationExcel()
     self.datas=GetData()
     self.gettime=GetTime()
Esempio n. 18
0
class GetData(object):

    def __init__(self):
        self.opera_excel = OperationExcel()
        self.sheet = self.opera_excel.get_data()

    '''获取excel的行数,就是我们的case个数'''

    def get_case_lines(self):
        try:
            return self.opera_excel.get_lines()
        except Exception as e:
            logging.info("错误为:", e)

    '''获取是否执行'''

    def get_is_run(self, row):
        try:
            flag = None
            col = get_run()
            run_model = self.opera_excel.get_cell_value(row, col)
            if run_model == 'y':
                flag = True
            else:
                flag = False
            return flag
        except Exception as e:
            logging.info("错误为:", e)

    '''获取接口描述'''

    def get_api_msg(self, row):
        try:
            col = get_request_name()
            api_msg = self.opera_excel.get_cell_value(row, col)
            return api_msg
        except Exception as e:
            logging.info("错误为:", e)

    '''获取接口名称'''

    def get_api_name(self, row):
        try:
            col = get_api_name()
            api_name = self.opera_excel.get_cell_value(row, col)
            return api_name
        except Exception as e:
            logging.info("错误为:", e)

    '''是否携带header'''

    def get_request_headers(self, row):
        try:
            col = get_header()
            header = self.opera_excel.get_cell_value(row, col)
            if header == '':
                return None
            return header
        except Exception as e:
            logging.info("错误为:", e)

    '''是否有header'''

    def is_header(self, row):
        try:
            col = get_header()
            header = self.opera_excel.get_cell_value(row, col)

            if header != 'n':
                header = json.loads(header)
                return header
                # return self.opera_excel.get_cell_value(row,col)
            elif header == 'w':
                return 'w'
            else:
                return None
        except Exception as e:
            logging.info("错误为:", e)

    '''获取请求方式'''

    def get_request_method(self, row):
        try:
            col = get_run_way()
            request_method = self.opera_excel.get_cell_value(row, col)
            return request_method
        except Exception as e:
            logging.info("错误为:", e)

    '''获取url'''

    def get_request_url(self, row):
        try:
            col = get_url()
            url = self.opera_excel.get_cell_value(row, col)
            return url
        except Exception as e:
            logging.info("错误为:", e)

    '''请求数据'''

    def get_request_data(self, row):
        try:
            col = get_data()
            data = self.opera_excel.get_cell_value(row, col)
            if data == '':
                return None
            return data
        except Exception as e:
            logging.info("错误为:", e)

    '''通过获取关键字拿到data数据'''

    def get_data_for_json(self, row):
        try:
            opera_json = OperationJson()
            request_data = opera_json.get_data(self.get_request_data(row))
            return request_data
        except Exception as e:
            logging.info("错误为:", e)

    '''获取要提取的字段的值'''

    def get_depend_value(self, row):
        try:
            col = get_depend_value()
            depend_value = self.opera_excel.get_cell_value(row, col)
            if depend_value == '':
                return None
            return depend_value
        except Exception as e:
            logging.info("错误为:", e)

    '''获取预期结果'''

    def get_expect_data(self, row):
        try:
            col = get_expect()
            expect = self.opera_excel.get_cell_value(row, col)
            if expect == '':
                return None
            return expect
        except Exception as e:
            logging.info("错误为:", e)

    '''获取http状态码'''

    def get_http_code_data(self, row):
        try:
            col = get_http_code()
            http_code = self.opera_excel.get_cell_value(row, col)
            return http_code
        except Exception as e:
            logging.info("错误为:", e)

    '''获取待替换的值'''

    def get_waiting_replace_key(self, row):
        try:
            col = get_waiting_replace_key()
            wait_rep_key = self.opera_excel.get_cell_value(row, col)
            if wait_rep_key == '':
                return None
            return wait_rep_key
        except Exception as e:
            logging.info('错误为:', e)

    '''获取实际替换的值'''

    def get_actual_replace_key(self, row):
        try:
            col = get_actual_replace_key()
            act_rep_key = self.opera_excel.get_cell_value(row, col)
            if act_rep_key == '':
                return None
            return act_rep_key
        except Exception as e:
            logging.info('错误为:', e)

    '''写入数据'''

    def write_result(self, row, value):
        try:
            col = get_result()
            self.opera_excel.write_value(sheet=self.sheet, content=value, rowNo=row, colsNo=col)
        except Exception as e:
            logging.info("错误为:", e)

    '''获取依赖返回数据的key'''

    def get_depend_key(self, row):
        try:
            col = get_data_depend()
            depent_key = self.opera_excel.get_cell_value(row, col)
            if depent_key == "":
                return None
            else:
                return depent_key
        except Exception as e:
            logging.info("错误为:", e)

    def is_depend(self, row):  # 是否有依赖
        try:
            col = get_case_depend()
            depend_case_id = self.opera_excel.get_cell_value(row, col)
            if depend_case_id == "":
                return None
            else:
                return depend_case_id
        except Exception as e:
            logging.info("错误为:", e)

    '''获取数据依赖字段'''

    def get_depend_field(self, row):
        try:
            col = get_field_depend()
            data = self.opera_excel.get_cell_value(row, col)
            if data == "":
                return None
            else:
                return data
        except Exception as e:
            logging.info("错误为:", e)

    '''获取请求方式'''

    def get_set_key(self, row):
        try:
            col = get_set_key()
            request_method = self.opera_excel.get_cell_value(row, col)
            return request_method
        except Exception as e:
            logging.info("错误为:", e)
Esempio n. 19
0
class GetData:
    def __init__(self):
        self.operation_excel = OperationExcel()
        self.get_headers_cookies = GetHeadersCookies()
        self.get_config = ReadConfig()

    def get_sheet_names(self):
        """获取当前工作簿中所有工作表的名称"""
        return self.operation_excel.get_sheet_names()

    def get_sheet_data(self, sheet_name):
        """通过sheet页名称读取对应sheet页的数据"""
        return self.operation_excel.get_sheet_data(sheet_name)

    def get_sheet_lines(self):
        """获取当前sheet页的总行数"""
        return self.operation_excel.get_sheet_lines()

    def get_json_file_name(self, sheet_name):
        """获取json文件名称"""
        sheet_name = "../test_data/json_data/" + sheet_name + ".json"
        return sheet_name

    def get_save_result_path(self):
        '''获取结果文件路径'''
        return self.operation_excel.save_result_path

    def get_is_run(self, x):
        """获取case是否运行"""
        flag = None
        y = data_conf.get_run()
        run_value = self.operation_excel.get_cell_value(x, y)
        if run_value.lower() == 'yes':
            flag = True
        else:
            flag = False
        return flag

    def get_is_header(self, x):
        """是否携带headers"""
        y = data_conf.get_request_header()
        header = self.operation_excel.get_cell_value(x, y)

        if header == 'yes':
            return self.get_headers_cookies.get_headers_value()
        else:
            return None

    def get_is_cookie(self, x):
        """是否携带cookies"""
        y = data_conf.get_request_cookie()
        cookie = self.operation_excel.get_cell_value(x, y)
        if cookie == 'yes':
            return self.get_headers_cookies.get_cookies_value()
        return None

    def get_request_method(self, x):
        """获取请求方法"""
        y = data_conf.get_request_method()
        request_method = self.operation_excel.get_cell_value(x, y)
        return request_method

    def get_request_url(self, x):
        """获取请求地址"""
        y = data_conf.get_url()
        request_url = self.operation_excel.get_cell_value(x, y)
        base_url = self.get_config.get_http_config_var('baseurl')
        request_url = base_url + request_url
        return request_url

    def get_request_data(self, sheet_name, x):
        """获取请求数据"""
        y = data_conf.get_request_data()
        request_data_key = self.operation_excel.get_cell_value(x, y)
        if request_data_key == '':
            return None
        else:
            request_data = self.__get_data_for_json(sheet_name,
                                                    request_data_key)
            return request_data

    def __get_data_for_json(self, sheet_name, request_data_key):
        """通过excel中关键字去获取json数据"""
        sheetName = self.get_json_file_name(sheet_name)
        op_json = OperationJson(file_path=sheetName)
        data = op_json.get_key_words(request_data_key)
        return data

    def get_expect_data(self, x):
        """获取预期结果数据"""
        y = data_conf.get_expect_result()
        expect_data = self.operation_excel.get_cell_value(x, y)
        if expect_data == '':
            return None
        else:
            return string_to_eval(x, y, expect_data)

    def get_module_name(self, x):
        """获取模块名称"""
        y = data_conf.get_name()
        module_name = self.operation_excel.get_cell_value(x, y)
        return module_name

    def write_real_result(self, sheet_name, row, value):
        """写测试结果到excel"""
        y = data_conf.get_real_results()
        self.operation_excel.write_value(sheet_name, row, y, value)

    def get_is_case_depend(self, x):
        """判断是否有case依赖"""
        y = data_conf.get_case_depend()
        case_depend = self.operation_excel.get_cell_value(x, y)
        if case_depend == "":
            return None
        else:
            return string_to_eval(x, y, case_depend)

    def get_depend_data(self, x):
        """获取响应结果中的依赖字段"""
        y = data_conf.get_data_depend()
        data_depend = self.operation_excel.get_cell_value(x, y)
        if data_depend == "":
            return None
        else:
            return string_to_eval(x, y, data_depend)

    def get_depend_filed(self, x):
        """获取数据依赖字段"""
        y = data_conf.get_filed_depend()
        filed_depend = self.operation_excel.get_cell_value(x, y)
        if filed_depend == "":
            return None
        else:
            return string_to_eval(x, y, filed_depend)
Esempio n. 20
0
class TestRun(object):
    def __init__(self):
        self.run_method = RunMethod()
        self.data = GetData()
        self.common_util = CommonUtil()
        self.send_email = SendEmail()
        self.excel = OperationExcel()
        self.sheet_obj = self.excel.get_data()

    def test_run(self):

        res = None
        pass_count = []
        fail_count = []
        skip_count = []
        # 获取多少行
        rows_count = self.data.get_case_lines()

        for i in range(2, rows_count + 1):
            run_num = [2, 1]
            is_run = self.data.get_is_run(i)
            message = self.data.get_api_msg(i)
            api_name = self.data.get_api_name(i)
            if is_run:

                url_path = self.data.get_request_url(i)

                url = config_global.base_url[0] + url_path

                method = self.data.get_request_method(i)

                data = self.data.get_request_data(i)

                code = self.data.get_http_code_data(i)

                expect = self.data.get_expect_data(i)

                headers = self.data.get_request_headers(i)

                depend_Value = self.data.get_depend_value(i)  # tiquzhi

                set_key = self.data.get_set_key(i)

                wait_key = self.data.get_waiting_replace_key(i)

                actual_key = self.data.get_actual_replace_key(i)

                header = get_header_value()

                if data != None:
                    if '88888888' in data:
                        data = data.replace("88888888", "17154654546")
                    data = json.loads(data)

                if headers != None:
                    try:
                        with open(depend_data_path, 'r',
                                  encoding='utf-8') as f:
                            header_value = json.load(f)
                            header[headers] = header_value["token"]

                    except Exception as e:
                        logging.info("错误为:", e)

                depend_case = self.data.is_depend(i)

                if depend_case != None:
                    self.depend_data = DependentData(depend_case)
                    # 获取的依赖响应
                    depend_response_data = self.depend_data.get_data_for_key(i)

                    # 获取依赖的key
                    depend_key = self.data.get_depend_field(i)

                    # 更新参数值
                    data[depend_key] = depend_response_data
                '''待提取的key'''
                if wait_key != None:

                    try:
                        with open(depend_data_path, 'r',
                                  encoding='utf-8') as f:

                            dependvalue = f.read()

                            depend_value_dict = json.loads(dependvalue)

                        wait_key_list = str_for_list(wait_key)
                        actual_key_list = str_for_list(actual_key)

                        for index_num in range(len(wait_key_list)):
                            Wait_key = wait_key_list[index_num]
                            Act_key = actual_key_list[index_num]
                            depend_value_key = depend_value_dict[Act_key]
                            data[Wait_key] = depend_value_key

                    except Exception as e:
                        logging.info("错误为:", e)

                def fail_run():
                    response = self.run_method.run_main(
                        method, url, data, header)
                    res = response[0]
                    # print('response---->',response)
                    # print('res---->',res)
                    global http_code
                    http_code = response[1]

                    # print(type(http_code), http_code)

                    # 断言

                    if int(code) == http_code:

                        if self.common_util.is_contain(expect, res):
                            logging.info('\033[1;32;m%s接口:%s->接口执行通过\033[0m' %
                                         (api_name, message))
                            writeTestResult(excelObj.get_data(),
                                            rowNo=i,
                                            testResult='pass')
                            pass_count.append(i)

                            if depend_Value != None:
                                self.depend_data = DependentData(depend_case)
                                self.depend_data.save_depend_value(
                                    res, depend_Value, set_key)

                        else:
                            fail = run_num[0]
                            fail -= 1
                            run_num[0] = fail

                            while run_num[0]:
                                fail_num = run_num[1]
                                run_num[1] = run_num[1] + 1
                                print('第%s次执行失败,开始第%s次执行。。。' %
                                      (fail_num, fail_num + 1))

                                time.sleep(1)
                                logging.info(
                                    "\033[0;43;41m%s接口:%s->接口执行失败\033[0m" %
                                    (api_name, message))

                                fail_run()

                            writeTestResult(excelObj.get_data(),
                                            rowNo=i,
                                            testResult='faild',
                                            errorInfo=res)
                            fail_count.append(i)

                    else:
                        fail = run_num[0]
                        fail -= 1
                        run_num[0] = fail

                        while run_num[0]:
                            fail_num = run_num[1]
                            run_num[1] = run_num[1] + 1

                            print('第%s次执行失败,开始第%s次执行。。。' %
                                  (fail_num, fail_num + 1))

                            time.sleep(1)
                            logging.info("\033[0;43;41m%s->接口执行失败\033[0m" %
                                         message)

                            fail_run()

                        writeTestResult(excelObj.get_data(),
                                        rowNo=i,
                                        testResult='faild',
                                        errorInfo=res)
                        fail_count.append(i)

                fail_run()
            else:
                logging.info('%s接口:%s->接口不执行' % (api_name, message))
                skip_count.append(i)
                writeTestResult(excelObj.get_data(),
                                rowNo=i,
                                testResult='skip')

            # 发送邮件
        logging.info("正在发送邮件,请等待。。。")
Esempio n. 21
0
from base.common_method import *
import json
import time
import requests
from utils.commonutil import CommonUtil
from data.dependent_data import DependentData
from utils.send_email import SendEmail
from utils.operation_json import OperationJson
from utils.operation_header import OPerationHeader
from utils.write_result import *
from utils.operation_excel import OperationExcel
from utils.Excel_Obj import *
from utils.Log import *
from config import config_global

obj = OperationExcel()
all_data = obj.get_excel_all_data()


@ddt.ddt
class TestAllCase(unittest.TestCase):
    def setUp(self):
        self.run = TestRun()
        self.data = GetData()
        self.run_method = RunMethod()
        self.common_util = CommonUtil()
        self.send_email = SendEmail()
        self.excel = OperationExcel()
        self.sheet_obj = self.excel.get_data()

    @ddt.data(*all_data)
Esempio n. 22
0
class TestBooks:
    rqst = RequestMethod()
    excel = OperationExcel('books.xlsx')

    def assert_result(self, res, row):
        assert res.status_code == 200
        # 如果返回结果里有中文,那么就要的序列化的时候,注意参数ensure_ascii=False,否则可能断言错误
        # 下面的assert xxx in xxx, in的前面和后面都是str类型
        assert self.excel.get_expect(row=row) in json.dumps(
            res.json(),
            ensure_ascii=False)  # res.text的类型是str;res.json()的类型是dict

    # ###########################测试用例组织方式1:所有case都在一个函数中运行###########################
    # 只根据excel中行数的不同,进行数据的循环即可
    def test_books(self):
        for i in range(1, self.excel.get_rows):
            if self.excel.get_method(i) == 'get':
                if '{bookID}' in self.excel.get_url(i):
                    res = self.rqst.get(url=self.excel.get_url(i).replace(
                        '{bookID}', read_id_from_file()))
                else:
                    res = self.rqst.get(self.excel.get_url(i))
            elif self.excel.get_method(i) == 'post':
                res = self.rqst.post(url=self.excel.get_url(i),
                                     json=self.excel.get_param(i))
                write_id_to_file(res.json()[0]['datas']['id'])
            elif self.excel.get_method(i) == 'put':
                res = self.rqst.put(url=self.excel.get_url(i).replace(
                    '{bookID}', read_id_from_file()),
                                    json=self.excel.get_param(i))
            else:
                res = self.rqst.delete(url=self.excel.get_url(i).replace(
                    '{bookID}', read_id_from_file()))
            print()
            print(res.json())
            print()
            self.assert_result(res, i)

    ############################测试用例组织方式2:一个case是一个函数,依次运行###########################
    def test_books_001(self):
        # print(self.file_obj.get_method(1), self.file_obj.get_url(1))
        res = self.rqst.get(url=self.excel.get_url(1))
        self.assert_result(res, row=1)

    def test_books_002(self):
        res = self.rqst.post(url=self.excel.get_url(row=2),
                             json=self.excel.get_param(row=2))
        # print(res.json())
        self.assert_result(res, row=2)
        write_id_to_file(res.json()[0]['datas']['id'])

    def test_books_003(self):
        book_id = read_id_from_file()
        # print(self.excel.get_url(row=3).replace('{bookID}', book_id))
        res = self.rqst.get(url=self.excel.get_url(
            row=3).replace('{bookID}', book_id))
        # print(res.json())
        self.assert_result(res, row=3)

    def test_book_004(self):
        # print(self.excel.get_url(row=4).replace('{bookID}', read_id_from_file()))
        # print(self.excel.get_param(row=4))
        res = self.rqst.put(url=self.excel.get_url(row=4).replace(
            '{bookID}', read_id_from_file()),
                            json=self.excel.get_param(row=4))
        # print(res.json())
        self.assert_result(res, row=4)

    def test_book_005(self):
        res = self.rqst.delete(url=self.excel.get_url(
            row=5).replace('{bookID}', read_id_from_file()))
        # print(res.json())
        self.assert_result(res, row=5)

    def test_books_006(self):
        res = self.rqst.get(url=self.excel.get_url(1))
        print(res.json())
        self.assert_result(res, row=1)
Esempio n. 23
0
 def __init__(self):
     self.opera_excel = OperationExcel()
Esempio n. 24
0
 def __init__(self, case_id):
     self.case_id = case_id
     self.opera_excel = OperationExcel()
     self.data = GerData()
Esempio n. 25
0
class TestAllCase(unittest.TestCase):
    def setUp(self):
        self.run = TestRun()
        self.data = GetData()
        self.run_method = RunMethod()
        self.common_util = CommonUtil()
        self.send_email = SendEmail()
        self.excel = OperationExcel()
        self.sheet_obj = self.excel.get_data()

    @ddt.data(*all_data)
    def test_all_case(self, data):  # 提取值 提取值的key 待替换的key 实际替换的key
        get_num, get_case_des, get_api, get_exec, get_module, get_pre, get_url, get_header, get_method, get_parames, get_hope_http_code, get_hope_response, get_results, get_run_time, get_error_msg, get_depend_Value, get_setting_key, get_wait_key, get_actual_key = data
        print(get_num, get_case_des, get_api, get_exec, get_module, get_pre,
              get_url, get_header, get_method, get_parames, get_hope_http_code,
              get_hope_response, get_results, get_run_time, get_error_msg,
              get_depend_Value, get_setting_key, get_wait_key, get_actual_key)
        print("=" * 20)
        print(*all_data)

        # run.test_run()
        res = None
        pass_count = []
        fail_count = []
        skip_count = []

        run_num = [2, 1]

        is_run = get_exec  # exec

        message = get_case_des

        api_name = get_api
        if is_run == 'y':

            url_path = get_url

            url = config_global.base_url[0] + url_path

            method = get_method

            data = get_parames

            code = get_hope_http_code

            expect = get_hope_response

            headers = get_header

            depend_Value = get_depend_Value  # tiquzhi

            set_key = get_setting_key

            wait_key = get_wait_key

            actual_key = get_actual_key

            header = get_header_value()

            if data != None:
                if '88888888' in data:
                    data = data.replace("88888888", "17154654546")
                data = json.loads(data)

            if headers != None:
                try:
                    with open(depend_data_path, 'r', encoding='utf-8') as f:
                        header_value = json.load(f)
                        header[headers] = header_value["token"]

                except Exception as e:
                    logging.info("错误为:", e)

            # depend_case = data.is_depend(num)
            depend_case = get_num
            #
            # if depend_case != None:
            #     self.depend_data = DependentData(depend_case)
            #     # 获取的依赖响应
            #     depend_response_data = self.depend_data.get_data_for_key(i)
            #
            #     # 获取依赖的key
            #     depend_key = self.data.get_depend_field(i)
            #
            #     # 更新参数值
            #     data[depend_key] = depend_response_data
            '''待提取的key'''
            if wait_key != None:

                try:
                    with open(depend_data_path, 'r', encoding='utf-8') as f:

                        dependvalue = f.read()

                        depend_value_dict = json.loads(dependvalue)

                    wait_key_list = str_for_list(wait_key)
                    actual_key_list = str_for_list(actual_key)

                    for index_num in range(len(wait_key_list)):
                        Wait_key = wait_key_list[index_num]
                        Act_key = actual_key_list[index_num]
                        depend_value_key = depend_value_dict[Act_key]
                        data[Wait_key] = depend_value_key

                except Exception as e:
                    logging.info("错误为:", e)

            def fail_run():

                response = self.run_method.run_main(method, url, data, header)
                res = response[0]
                # print('response---->',response)
                # print('res---->',res)
                global http_code
                http_code = response[1]

                # print(type(http_code), http_code)

                # 断言

                if int(code) == http_code:

                    if self.common_util.is_contain(expect, res):
                        logging.info('\033[1;32;m%s接口:%s->接口执行通过\033[0m' %
                                     (api_name, message))
                        self.assertTrue(True)  # 断言
                        writeTestResult(excelObj.get_data(),
                                        rowNo=get_num,
                                        testResult='pass')
                        pass_count.append(get_num)

                        if depend_Value != None:
                            self.depend_data = DependentData(depend_case)
                            self.depend_data.save_depend_value(
                                res, depend_Value, set_key)

                    else:
                        fail = run_num[0]
                        fail -= 1
                        run_num[0] = fail

                        while run_num[0]:
                            fail_num = run_num[1]
                            run_num[1] = run_num[1] + 1
                            print('第%s次执行失败,开始第%s次执行。。。' %
                                  (fail_num, fail_num + 1))

                            time.sleep(1)
                            logging.info(
                                "\033[0;43;41m%s接口:%s->接口执行失败\033[0m" %
                                (api_name, message))

                            fail_run()

                        writeTestResult(excelObj.get_data(),
                                        rowNo=get_num,
                                        testResult='faild',
                                        errorInfo=res)
                        self.assertTrue(False, msg=res)  # 断言

                        fail_count.append(get_num)

                else:
                    fail = run_num[0]
                    fail -= 1
                    run_num[0] = fail

                    while run_num[0]:
                        fail_num = run_num[1]
                        run_num[1] = run_num[1] + 1

                        print('第%s次执行失败,开始第%s次执行。。。' %
                              (fail_num, fail_num + 1))

                        time.sleep(1)
                        logging.info("\033[0;43;41m%s->接口执行失败\033[0m" %
                                     message)

                        fail_run()

                    writeTestResult(excelObj.get_data(),
                                    rowNo=get_num,
                                    testResult='faild',
                                    errorInfo=res)
                    fail_count.append(get_num)

            fail_run()
        else:
            logging.info('%s接口:%s->接口不执行' % (api_name, message))
            skip_count.append(get_num)
            writeTestResult(excelObj.get_data(),
                            rowNo=get_num,
                            testResult='skip')
Esempio n. 26
0
 def __init__(self):
     self.operation_excel = OperationExcel()
     self.get_headers_cookies = GetHeadersCookies()
     self.get_config = ReadConfig()
Esempio n. 27
0
from utils.operation_excel import OperationExcel
from config.config_global import *

#创建解析Excel对象
excelObj = OperationExcel()

#将Excel数据文件加载到内存
excelObj.loadWorkBook(excelpath)
Esempio n. 28
0
 def __init__(self, case_id):
     self.opexcel = OperationExcel()
     self.getdata = GetData()
     self.case_id = case_id
     self.runmethod = RunMethod()
Esempio n. 29
0
class GerData:

    def __init__(self):
        self.opera_excel = OperationExcel()

    #去获取excel行数,就是我们的case个数
    def get_case_lines(self):
        return self.opera_excel.get_lines()


    #判断是否执行
    def get_is_run(self,row):
        flag = None
        col = int(data_config.get_run())
        run_model =self.opera_excel.get_cell_velue(row,col)
        if run_model == 'yes':
            return True
        else:
            return False
        return flag

    #判断是否携带header
    def is_header(self,row):
        col = int(data_config.get_header())
        header = self.opera_excel.get_cell_velue(row,col)
        if header == 'yes':
            return data_config.get_header_value()
        else:
            return None

    #获取请求方式
    def get_request_method(self,row):
        col = int(data_config.get_run_way())
        request_method = self.opera_excel.get_cell_velue(row,col)
        return request_method

    #获取url
    def get_request_url(self,row):
        col = int(data_config.get_url())
        url = self.opera_excel.get_cell_velue(row,col)
        return url

    #获取请求数据
    def get_request_data(self,row):
        col = int(data_config.get_data())
        data = self.opera_excel.get_cell_velue(row,col)
        if data == '':
            return None
        return data

    #通过关键字拿到data数据
    def get_data_for_json(self,row):
        opera_json = OperetionJson()
        request_data = opera_json.get_data(self.get_request_data(row))
        return request_data


    #获取预期结果
    def get_expect_data(self,row):
        col = int(data_config.get_expect())
        expect = self.opera_excel.get_cell_velue(row,col)
        #print(expect)
        if expect == '':
            return None
        return expect

    #获取实际结果
    def write_result(self,row,value):
        col = int(data_config.get_result())
        self.opera_excel.write_value(row,col,value)

    #获取依赖数据的key
    def get_depend_key(self,row):
        col = int(data_config.get_data_depend())
        depent_key = self.opera_excel.get_cell_velue(row,col)
        if depent_key == '':
            return None
        else:
            print("依赖的key:",depent_key)
            return depent_key

    #判断是否有case依赖
    def is_depend(self,row):
        col = int(data_config.get_case_depend())
        depend_case_id = self.opera_excel.get_cell_velue(row,col)
        if depend_case_id == "":
            return None
        else:
            print("依赖的caseid:",depend_case_id)
            return depend_case_id

    #获取数据依赖字段
    def get_depend_field(self,row):
        col = int(data_config.get_field_depend())
        depend_data = self.opera_excel.get_cell_velue(row,col)
        if depend_data == "":
            return None
        else:
            print('依赖的字段:',depend_data)
            return depend_data