Beispiel #1
0
 def write_all_back(self, result_data, test_result_data, file_name=None):
     if file_name is None:
         wb = load_workbook(test_case_path)
     else:
         wb = load_workbook(base_path + 'test_data' + file_name)
     excel_row = eval(ReadConfig().get_config(case_config_path, 'Excel_row',
                                              'excel_row'))
     mode = eval(ReadConfig.get_config(case_config_path, 'Mode', 'mode'))
     for key in mode:
         sheet = wb[key]
         if mode[key] == 'all':
             list_range = range(1, sheet.max_row)
         else:
             list_range = mode[key]
         k = 0
         for i in list_range:
             i = i + 1
             sheet.cell(i, excel_row['result']).value = result_data[k]
             sheet.cell(
                 i, excel_row['test_result']).value = test_result_data[k]
             k = k + 1
     if file_name is None:
         wb.save(test_case_path)
     else:
         wb.save(base_path + 'test_data' + file_name)
Beispiel #2
0
    def get_data(self, file_name=None):
        global new_data
        excel_row = eval(ReadConfig().get_config(case_config_path, 'Excel_row',
                                                 'excel_row'))
        if file_name is None:
            wb = load_workbook(test_case_path)
        else:
            wb = load_workbook(base_path + 'test_data' + file_name)
        mode = eval(ReadConfig.get_config(case_config_path, 'Mode', 'mode'))
        test_data = []
        for key in mode:
            # print(key)
            sheet = wb[key]
            if mode[key] == 'all':
                list_range = range(1, sheet.max_row)
            else:
                list_range = mode[key]
            for i in list_range:
                i = i + 1
                new_data = sheet.cell(i, excel_row['data']).value
                if sheet.cell(i,
                              excel_row['data']).value.find('${admin}') != -1:
                    new_admin = getattr(GetAdmin, 'admin') + str_time_mdhms
                    setattr(GetAdmin, 'admin', new_admin)
                    new_data = DoRegx().do_regx(
                        sheet.cell(i, excel_row['data']).value, GetAdmin)
                if sheet.cell(
                        i, excel_row['data']).value.find('${student}') != -1:
                    new_student = getattr(GetStudent,
                                          'student') + str_time_mdhms
                    setattr(GetStudent, 'student', new_student)
                    new_data = DoRegx().do_regx(
                        sheet.cell(i, excel_row['data']).value, GetStudent)
                if sheet.cell(
                        i, excel_row['data']).value.find('${teacher}') != -1:
                    new_student = getattr(GetTeacher,
                                          'teacher') + str_time_mdhms
                    setattr(GetTeacher, 'teacher', new_student)
                    new_data = DoRegx().do_regx(
                        sheet.cell(i, excel_row['data']).value, GetTeacher)

                row_data = {
                    'caseid': sheet.cell(i, excel_row['caseid']).value,
                    'url': sheet.cell(i, excel_row['url']).value,
                    'data': eval(new_data),
                    'title': sheet.cell(i, excel_row['title']).value,
                    'method': sheet.cell(i, excel_row['method']).value,
                    'data_type': sheet.cell(i, excel_row['data_type']).value,
                    'expect': sheet.cell(i, excel_row['expect']).value,
                    'test_result': sheet.cell(i,
                                              excel_row['test_result']).value,
                    'test_sql': sheet.cell(i, excel_row['test_sql']).value,
                    'sheet_name': key
                }
                test_data.append(row_data)
        return test_data
Beispiel #3
0
 def get_data(cls, file_name):
     wb = load_workbook(file_name)  # linux命令
     mode = eval(
         ReadConfig.get_config(project_path.case_config_path, 'MODE',
                               'mode'))
     tel = getattr(GetData, "NoRegTel")  #从GetData拿到的手机号
     test_data = []
     for key in mode:  #遍历这个存在配置文件里面的字典
         sheet = wb[key]  #表单名
         if mode[key] == 'all':
             for i in range(2, sheet.max_row + 1):
                 row_data = {}  #字典
                 row_data["case_id"] = sheet.cell(i, 1).value
                 row_data["url"] = sheet.cell(i, 2).value
                 row_data["data"] = sheet.cell(i, 3).value
                 # if sheet.cell(i,3).value.find("${tel_1}")!=-1:
                 #     row_data["data"] = sheet.cell(i, 3).value.replace("${tel_1}",tel)
                 # elif sheet.cell(i,3).value.find("${tel}")!=-1:
                 #     row_data["data"] = sheet.cell(i, 3).value.replace("${tel_1}",tel)
                 # else:
                 #     row_data["data"]=sheet.cell(i,3).value
                 row_data["title"] = sheet.cell(i, 4).value
                 row_data["http_method"] = sheet.cell(i, 5).value
                 row_data["excepted"] = sheet.cell(i, 6).value
                 row_data["sheet_name"] = key
                 test_data.append(row_data)
                 # cls.updata_tel(tel+2,file_name,"init")#更新手机号
                 # cls.updata_tel(tel,file_name,"init")#更新手机号
         else:
             for case_id in mode[key]:
                 row_data = {}  # 字典
                 row_data["case_id"] = sheet.cell(case_id + 1, 1).value  #行号
                 row_data["url"] = sheet.cell(case_id + 1, 2).value
                 # row_data["data"] = sheet.cell(case_id+1, 3).value
                 if sheet.cell(i, 3).value.find("${tel_1}") != -1:
                     row_data["data"] = sheet.cell(i, 3).value.replace(
                         "${tel_1}", tel)
                 elif sheet.cell(i, 3).value.find("${tel}") != -1:
                     row_data["data"] = sheet.cell(i, 3).value.replace(
                         "${tel_1}", tel)
                 else:
                     row_data["data"] = sheet.cell(i, 3).value
                 row_data["title"] = sheet.cell(case_id + 1, 4).value
                 row_data["http_method"] = sheet.cell(case_id + 1, 5).value
                 row_data["excepted"] = sheet.cell(case_id + 1, 6).value
                 test_data.append(row_data)
                 cls.updata_tel(tel + 2, file_name, "init")  #更新手机号
     return test_data
Beispiel #4
0
    def get_data_notice(cls, file_name):
        wb = load_workbook(file_name)
        # mode = eval(ReadConfig.get_config(project_path.case_config_path, "MODE", "mode"))
        mode = eval(
            ReadConfig.get_config(project_path.case_config_path, "MODE",
                                  "mode"))
        test_data = []
        mode_key = set(mode)
        for key in mode_key:
            if key == "notice":
                sheet = wb[key]
                if mode[key] == "all":
                    for i in range(2, sheet.max_row + 1):
                        row_data = {}  # 字典
                        row_data["case_id"] = sheet.cell(i, 1).value
                        row_data["model"] = sheet.cell(i, 2).value
                        row_data["title"] = sheet.cell(i, 3).value
                        row_data["url"] = sheet.cell(i, 4).value
                        row_data["params"] = sheet.cell(i, 5).value
                        row_data["header"] = sheet.cell(i, 6).value
                        row_data["http_method"] = sheet.cell(i, 7).value
                        row_data["data"] = sheet.cell(i, 8).value
                        row_data["excepted_code"] = sheet.cell(i, 9).value
                        row_data["sheet_name"] = key
                        test_data.append(row_data)
                else:
                    for case_id in mode[key]:
                        row_data = {}  # 字典
                        row_data["case_id"] = sheet.cell(case_id + 1,
                                                         1).value  # 行号
                        row_data["model"] = sheet.cell(case_id + 1, 2).value
                        row_data["title"] = sheet.cell(case_id + 1, 3).value
                        row_data["url"] = sheet.cell(case_id + 1, 4).value
                        row_data["params"] = sheet.cell(case_id + 1, 5).value
                        row_data["header"] = sheet.cell(case_id + 1, 6).value
                        row_data["http_method"] = sheet.cell(case_id + 1,
                                                             7).value
                        row_data["data"] = sheet.cell(case_id + 1, 8).value
                        row_data["excepted_code"] = sheet.cell(case_id + 1,
                                                               9).value

                        test_data.append(row_data)
        return test_data
Beispiel #5
0
    def send():
        # html报告地址
        with open(test_report_path, 'r', encoding="utf-8") as f:
            content_html = f.read()

        mail_config = eval(ReadConfig.get_config(mail_config_path, 'Mail', 'mail'))

        mail = {
            'subject': mail_config['subject'],  # Anything you want.
            'content_text': mail_config['content_text'],  # Anything you want.
            # 'content_html': content_html, # Body html
            'attachments': mail_config['attachments'],  # Absolute path will be better.
        }

        server = zmail.server(mail_config['sender'],
                              mail_config['auth'],
                              smtp_host=mail_config['smtp_host'],
                              smtp_port=mail_config['smtp_port'])
        server.send_mail(mail_config['receiver'], mail, cc=mail_config['cc'])
Beispiel #6
0
 def get_data(file_name):
     wb = load_workbook(file_name)
     mode = eval(ReadConfig.get_config(test_config_path, 'MODE', 'mode'))
     test_data = []
     for key in mode:
         sheet = wb[key]
         if mode[key] == 'all':
             for i in range(2, sheet.max_row + 1):
                 row_data = dict()
                 row_data['case_id'] = sheet.cell(i, 1).value
                 row_data['url'] = sheet.cell(i, 2).value
                 # if sheet.cell(i, 3).value.find('${tel}') != -1:
                 #     row_data['data'] = sheet.cell(i, 3).value.replace('${tel}', str(tel))
                 #     tel = tel + 1
                 # elif sheet.cell(i, 3).value.find('${admin_tel}') != -1:
                 #     row_data['data'] = sheet.cell(i, 3).value.replace('${admin_tel}', str(getattr(GetData, 'admin_tel')))
                 # elif sheet.cell(i, 3).value.find('${loan_member_id}') != -1:
                 #     row_data['data'] = sheet.cell(i, 3).value.replace('${loan_member_id}', str(getattr(GetData, 'loan_member_id')))
                 # elif sheet.cell(i, 3).value.find('${normal_tel}') != -1:
                 #     row_data['data'] = sheet.cell(i, 3).value.replace('${normal_tel}', str(getattr(GetData, 'normal_tel')))
                 # elif sheet.cell(i, 3).value.find('${memberID}') != -1:
                 #     row_data['data'] = sheet.cell(i, 3).value.replace('${memberID}', str(getattr(GetData, 'memberID')))
                 # else:
                 #     row_data['data'] = sheet.cell(i, 3).value
                 row_data['data'] = sheet.cell(i, 3).value
                 row_data['title'] = sheet.cell(i, 4).value
                 row_data['http_method'] = sheet.cell(i, 5).value
                 row_data['header'] = sheet.cell(i, 6).value
                 row_data['sheet_name'] = key
                 test_data.append(row_data)
         else:
             for case_id in mode[key]:
                 row_data = dict()
                 row_data['case_id'] = sheet.cell(case_id + 1, 1).value
                 row_data['url'] = sheet.cell(case_id + 1, 2).value
                 row_data['data'] = sheet.cell(case_id + 1, 3).value
                 row_data['title'] = sheet.cell(case_id + 1, 4).value
                 row_data['http_method'] = sheet.cell(case_id + 1, 5).value
                 row_data['header'] = sheet.cell(case_id + 1, 6).value
                 row_data['sheet_name'] = key
                 test_data.append(row_data)
     return test_data
Beispiel #7
0
    def get_data(self):
        wb = load_workbook(self.file_name)
        # sheet = wb[self.sheet_name]
        #读取配置文件只
        mode = eval(ReadConfig.get_config(case_config_path, 'MODE', 'mode'))

        test_data = []
        for key in mode:  #遍历存在这个字典里面的字典
            sheet = wb[key]
            if mode[key] == 'all':
                for i in range(2, sheet.max_row + 1):
                    sub_data = {}
                    sub_data["case_id"] = sheet.cell(i, 1).value
                    sub_data["module"] = sheet.cell(i, 2).value
                    sub_data["title"] = sheet.cell(i, 3).value
                    sub_data["method"] = sheet.cell(i, 4).value
                    sub_data["url"] = sheet.cell(i, 5).value
                    sub_data["data"] = sheet.cell(i, 6).value
                    sub_data["expected"] = sheet.cell(i, 7).value
                    sub_data["sheet_name"] = key
                    test_data.append(sub_data)

            else:
                for case_id in mode[key]:
                    i = case_id + 1  #行号
                    sub_data = {}
                    sub_data["case_id"] = sheet.cell(i, 1).value
                    sub_data["module"] = sheet.cell(i, 2).value
                    sub_data["title"] = sheet.cell(i, 3).value
                    sub_data["method"] = sheet.cell(i, 4).value
                    sub_data["type"] = sheet.cell(i, 5).value  #5
                    sub_data["url"] = sheet.cell(i, 6).value
                    sub_data["data"] = sheet.cell(i, 7).value
                    sub_data["get_value"] = sheet.cell(i, 8).value  #8
                    sub_data["expected"] = sheet.cell(i, 9).value
                    sub_data["sheet_name"] = key
                    test_data.append(sub_data)

        return test_data
    def get_data(cls,file_name):
        wb = load_workbook(file_name)
        mode = eval(ReadConfig.get_config(project_path.case_config_path,"MODE","mode"))
        tel =getattr(GetData,"NoRegTel")
        test_data= []
        for key in mode:#遍历这个存在配置文件里面的字典
            sheet = wb[key]#表单名
            if mode[key]=="all":
                for i in range(2,sheet.max_row+1):
                    row_data = {}#字典
                    row_data["case_id"] = sheet.cell(i, 1).value
                    row_data["model"] = sheet.cell(i, 2).value
                    row_data["title"] = sheet.cell(i, 3).value
                    row_data["url"] = sheet.cell(i, 4).value
                    row_data["params"] = sheet.cell(i, 5).value
                    row_data["header"] = sheet.cell(i, 6).value
                    row_data["http_method"] = sheet.cell(i, 7).value
                    row_data["data"] = sheet.cell(i, 8).value
                    row_data["excepted_code"] = sheet.cell(i, 9).value
                    row_data["sheet_name"] = key
                    test_data.append(row_data)
            else:
                for case_id in mode[key]:
                    row_data = {}  # 字典
                    row_data["case_id"] = sheet.cell(case_id+1, 1).value#行号
                    row_data["model"] = sheet.cell(case_id+1, 2).value
                    row_data["title"] = sheet.cell(case_id+1, 3).value
                    row_data["url"] = sheet.cell(case_id+1, 4).value
                    row_data["params"] = sheet.cell(case_id+1, 5).value
                    row_data["header"] = sheet.cell(case_id+1, 6).value
                    row_data["http_method"] = sheet.cell(case_id+1, 7).value
                    row_data["data"] = sheet.cell(case_id+1, 8).value
                    row_data["excepted_code"] = sheet.cell(case_id+1, 9).value


                    test_data.append(row_data)
                    # cls.updata_tel(tel+2,file_name,"init")#更新手机号
        return test_data
Beispiel #9
0
    def get_data(file_name):
        wb = load_workbook(file_name)
        mode = eval(
            ReadConfig.get_config(project_path.case_config_path, 'MODE',
                                  'mode'))

        # name="self:261993005056/123"
        test_data = []
        for key in mode:  #遍历这个存在配置文件里面的字典
            sheet = wb[key]  #表单名
            if mode[key] == 'all':
                for i in range(2, sheet.max_row + 1):
                    row_data = {}  #字典
                    row_data['case_id'] = sheet.cell(i, 1).value
                    row_data['url'] = sheet.cell(i, 2).value
                    row_data['data'] = sheet.cell(i, 3).value
                    # if sheet.cell(i,3).value.find('${name}')!=-1:   #有找到这个${name}
                    #     row_data['data']=sheet.cell(i,3).value.replace('${name}',str(name))
                    # else:  #如果没有找到的话
                    #     row_data['data']=sheet.cell(i,3).vlaue
                    row_data['title'] = sheet.cell(i, 4).value
                    row_data['http_method'] = sheet.cell(i, 5).value
                    row_data['expected'] = sheet.cell(i, 6).value
                    row_data['sheet_name'] = key
                    test_data.append(row_data)
            else:
                for case_id in mode[key]:
                    row_data = {}  # 字典
                    row_data['case_id'] = sheet.cell(case_id + 1, 1).value
                    row_data['url'] = sheet.cell(case_id + 1, 2).value
                    row_data['data'] = sheet.cell(case_id + 1, 3).value
                    row_data['title'] = sheet.cell(case_id + 1, 4).value
                    row_data['http_method'] = sheet.cell(case_id + 1, 5).value
                    row_data['expected'] = sheet.cell(case_id + 1, 6).value
                    row_data['sheet_name'] = key
                    test_data.append(row_data)
        return test_data
Beispiel #10
0
 def setUpClass(cls) -> None:
     """
     登录获取(后台)token
     :return:
     """
     # 获取主机地址
     HOST = ReadConfig.get_config(case_config_path, 'ADDRESS', 'host')
     url = f'{HOST}/api/auth/oauth/user/token'
     param = {"username": "******", "password": "******"}
     header = {
         "Content-Type": "application/json;charset=UTF-8",
         "Authorization": "Basic QmFzZVBsYXRmb3JtOjEyMzQ1Ng=="
     }
     res = HttpRequest().http_request(url,
                                      param,
                                      'post',
                                      'params',
                                      headers=header)
     setattr(GetToken, "Token", res.json()['value'])  # 反射设置token值
     get_header = {
         "Content-Type": "application/json;charset=UTF-8",
         "Authorization": "Bearer " + getattr(GetToken, "Token")
     }
     setattr(GetToken, "header", get_header)  # 反射设置header值
Beispiel #11
0
class DoExcel:
    sheet = None
    wb = None
    mode = eval(ReadConfig.get_config(case_config_path, "MODE",
                                      "mode"))  # 连接到配置文件字典,eval是因为读取到的都是字符串

    #读取excel数据
    def get_data(self, file_name):
        global wb
        wb = load_workbook(file_name)  # 打开excel
        test_data = []
        for key in DoExcel.mode:  #遍历这个存在配置文件里面的字典
            global sheet
            sheet = wb[key]  #key表单名  不需要传参
            if DoExcel.mode[key] == "all":
                for i in range(2, sheet.max_row + 1):
                    row_data = {}
                    row_data["case_id"] = sheet.cell(i, 1).value
                    row_data["module"] = sheet.cell(i, 2).value
                    row_data["title"] = sheet.cell(i, 3).value
                    row_data["headers"] = sheet.cell(i, 4).value
                    row_data["url"] = sheet.cell(i, 5).value
                    row_data["data"] = sheet.cell(i, 6).value
                    row_data["expected"] = sheet.cell(i, 7).value
                    row_data["method"] = sheet.cell(i, 8).value
                    row_data["sheet_name"] = key
                    test_data.append(row_data)
            else:
                for case_id in DoExcel.mode[key]:
                    row_data = {}
                    row_data["case_id"] = sheet.cell(case_id + 1, 1).value
                    row_data["module"] = sheet.cell(case_id + 1, 2).value
                    row_data["title"] = sheet.cell(case_id + 1, 3).value
                    row_data["headers"] = sheet.cell(case_id + 1, 4).value
                    row_data["url"] = sheet.cell(case_id + 1, 5).value
                    row_data["data"] = sheet.cell(case_id + 1, 6).value
                    row_data["expected"] = sheet.cell(case_id + 1, 7).value
                    row_data["method"] = sheet.cell(case_id + 1, 8).value
                    row_data["sheet_name"] = key
                    test_data.append(row_data)
        return test_data

    #将用例执行后的结果写回excel
    def write_back(self, file_name, sheet_name, i, result,
                   testresult):  #写回excel数据
        sh = wb[sheet_name]
        #####字体颜色#######
        unexecuted_color = Font(u'宋体',
                                size=9,
                                bold=True,
                                italic=False,
                                strike=False,
                                color='3232CD')
        pass_color = Font(u'宋体',
                          size=12,
                          bold=True,
                          italic=False,
                          strike=False,
                          color='228B22')
        pass_color1 = Font(u'宋体',
                           size=6,
                           bold=True,
                           italic=False,
                           strike=False,
                           color='228B22')
        fail_color = Font(u'宋体',
                          size=9,
                          bold=True,
                          italic=False,
                          strike=False,
                          color='FF0000')

        sh.cell(i, 9).value = result
        sh.cell(i, 11).value = time.strftime('%m-%d %H:%M',
                                             time.localtime(time.time()))
        #sheet.cell(i, 10).value = testresult
        if testresult == "pass":
            sh.cell(i, 10, value="pass").font = pass_color
        elif testresult == "pass,但是未获取到下一个接口所用数据":
            sh.cell(i, 10, value="pass,但是未获取到下一个接口所用数据").font = pass_color1
        elif testresult == "Failed":
            sh.cell(i, 10, value="Failed").font = fail_color
        #区分mode读取的是all还是数字列表
        if DoExcel.mode[sheet_name] != "all":
            for case_id in range(2, sh.max_row):
                if case_id not in DoExcel.mode[sheet_name]:
                    sh.cell(case_id + 1, 9).value = ""
                    sh.cell(case_id + 1, 10,
                            value="用例未执行").font = unexecuted_color
                    #sheet.cell(case_id + 1, 10).value = "用例未执行"
                    sh.cell(case_id + 1, 11).value = ""

    #保存和关闭excel
    def save_close_excel(self, file_name=test_case_path):
        wb.save(file_name)
        wb.close()
Beispiel #12
0
 def __init__(self):
     db_config = eval(ReadConfig.get_config(mysql_config_path, 'Config', 'db_config'))
     db = pymysql.connect(db_config["host"], db_config["user"], db_config["password"],
                          db_config["database"], port=db_config["port"])
     self.cursor = db.cursor()
Beispiel #13
0
 def test_api(self, item):
     # 获取主机地址
     HOST = ReadConfig.get_config(case_config_path, 'ADDRESS', 'host')
     item['url'] = HOST + item['url']  # 获取url
     #提交data为空,关联值get_value不为空
     if item['data'] == None and item['get_value'] != None:
         if type(eval(item['get_value'])) == dict:
             res = HttpRequest().http_request(item['url'],
                                              None,
                                              item['method'],
                                              item['type'],
                                              headers=getattr(
                                                  GetToken, "header"))
             if res.json()['msg'] == 'OK':
                 get_data = eval(item['get_value'])
                 for keys in get_data.keys():
                     key = keys
                     value = get_data[key]
                 add = 'res.json()' + value
                 add = eval(add)
                 OperaConfig.write_config(file_path, key, key, add)
             try:
                 self.assertEqual(item['expected'], res.json()['msg'])
                 TestResult = 'PASS'
             except AssertionError as e:
                 TestResult = 'FAIL'
                 print("执行用例出错:{0}".format(e))
                 raise e
             finally:
                 #写回结果(str(res.json()),excel只能写字符串,数字,不能写字典
                 DoExcel(test_case_path, item['sheet_name']).write_back(
                     item['case_id'] + 1, str(res.json()), TestResult)
                 print("获取到的结果是:{0}".format(res.json()))
     # 提交data不为空,关联值get_value不为空(字符串:使用值)
     elif item['data'] != None and item['get_value'] != None and type(
             item['get_value']) == str:
         data1 = OperaConfig.read_config(file_path, item['get_value'],
                                         item['get_value'])  #获取配置文件值
         if item['url'].find(item['get_value']) != -1:
             url = item['url'].replace("{{" + item['get_value'] + "}}",
                                       data1)
             res = HttpRequest().http_request(url,
                                              eval(item['data']),
                                              item['method'],
                                              item['type'],
                                              headers=getattr(
                                                  GetToken, "header"))
         elif item['data'] != None and item['data'].find(
                 item['get_value']) != -1:
             data = item['data'].replace("{{" + item['get_value'] + "}}",
                                         data1)
             res = HttpRequest().http_request(item['url'],
                                              eval(data),
                                              item['method'],
                                              item['type'],
                                              headers=getattr(
                                                  GetToken, "header"))
         try:
             self.assertEqual(item['expected'], res.json()['msg'])
             TestResult = 'PASS'
         except AssertionError as e:
             TestResult = 'FAIL'
             print("执行用例出错:{0}".format(e))
             raise e
         finally:
             #写回结果(str(res.json()),excel只能写字符串,数字,不能写字典
             DoExcel(test_case_path,
                     item['sheet_name']).write_back(item['case_id'] + 1,
                                                    str(res.json()),
                                                    TestResult)
             print("获取到的结果是:{0}".format(res.json()))
     # 提交data为空,关联值get_value为空(普通get)
     elif item['data'] == None and item['get_value'] == None:
         res = HttpRequest().http_request(item['url'],
                                          None,
                                          item['method'],
                                          item['type'],
                                          headers=getattr(
                                              GetToken, "header"))
         try:
             self.assertEqual(item['expected'], res.json()['msg'])
             TestResult = 'PASS'
         except AssertionError as e:
             TestResult = 'FAIL'
             print("执行用例出错:{0}".format(e))
             raise e
         finally:
             # 写回结果(str(res.json()),excel只能写字符串,数字,不能写字典
             DoExcel(test_case_path,
                     item['sheet_name']).write_back(item['case_id'] + 1,
                                                    str(res.json()),
                                                    TestResult)
             print("获取到的结果是:{0}".format(res.json()))
     # 其他
     else:
         res = HttpRequest().http_request(item['url'],
                                          eval(item['data']),
                                          item['method'],
                                          item['type'],
                                          headers=getattr(
                                              GetToken, "header"))
         try:
             self.assertEqual(item['expected'], res.json()['msg'])
             TestResult = 'PASS'
         except AssertionError as e:
             TestResult = 'FAIL'
             print("执行用例出错:{0}".format(e))
             raise e
         finally:
             #写回结果(str(res.json()),excel只能写字符串,数字,不能写字典
             DoExcel(test_case_path,
                     item['sheet_name']).write_back(item['case_id'] + 1,
                                                    str(res.json()),
                                                    TestResult)
             print("获取到的结果是:{0}".format(res.json()))
Beispiel #14
0
    def get_data(cls, file_name):
        wb = load_workbook(file_name)
        mode = eval(
            ReadConfig.get_config(project_path.test_config_path, 'MODE',
                                  'mode'))
        tel = getattr(GetData, 'NoRegTel')

        # 利用python查询数据库的方式,去拿到最大的手机号——可以加到这里,也可以加到get_data里面
        test_data = []
        for key in mode:  # 遍历这个存在配置文件里面的字典
            sheet = wb[key]  # key是表单名sheet_name
            if mode[key] == 'all':
                for i in range(2, sheet.max_row + 1):
                    row_data = {}
                    row_data['case_id'] = sheet.cell(i, 1).value
                    row_data['url'] = sheet.cell(i, 2).value
                    # row_data['data'] = sheet.cell(i, 3).value
                    # 做手机号的数据替换
                    if sheet.cell(
                            i, 3).value.find('${tel}') != -1:  # 有找到这个字符串${tel}
                        row_data['data'] = sheet.cell(i, 3).value.replace(
                            '${tel}', str(tel))
                        tel = tel + 1  # 每次完成tel调用后 就加1
                    else:  # 没有找到的话
                        row_data['data'] = DoRegex.do_regex(
                            sheet.cell(i, 3).value)
                    if sheet.cell(i, 4).value != None:
                        row_data['check_sql'] = DoRegex.do_regex(
                            sheet.cell(i, 4).value)
                    else:
                        row_data['check_sql'] = sheet.cell(i, 4).value
                    row_data['title'] = sheet.cell(i, 5).value
                    row_data['http_method'] = sheet.cell(i, 6).value
                    row_data['expected'] = sheet.cell(i, 7).value
                    row_data['sheet_name'] = key
                    test_data.append(row_data)
                    cls.update_tel(project_path.test_case_path, 'init',
                                   tel + 2)  # 更新excel中的手机号数据
            else:
                for case_id in mode[key]:
                    row_data = {}
                    row_data['case_id'] = sheet.cell(case_id + 1, 1).value
                    row_data['url'] = sheet.cell(case_id + 1, 2).value
                    # row_data['data'] = sheet.cell(case_id+1, 3).value
                    if sheet.cell(
                            case_id + 1,
                            3).value.find('${tel}') != -1:  # 有找到这个字符串${tel}
                        row_data['data'] = sheet.cell(case_id + 1,
                                                      3).value.replace(
                                                          '${tel}', str(tel))
                        tel = tel + 1
                    else:
                        row_data['data'] = DoRegex.do_regex(
                            sheet.cell(case_id + 1, 3).value)
                    if sheet.cell(i, 4).value != None:
                        row_data['check_sql'] = DoRegex.do_regex(
                            sheet.cell(case_id + 1, 4).value)
                    else:
                        row_data['check_sql'] = sheet.cell(case_id + 1,
                                                           4).value
                    row_data['title'] = sheet.cell(case_id + 1, 5).value
                    row_data['http_method'] = sheet.cell(case_id + 1, 6).value
                    row_data['expected'] = sheet.cell(case_id + 1, 7).value
                    row_data['sheet_name'] = key
                    test_data.append(row_data)
                    cls.update_tel(project_path.test_case_path, 'init',
                                   tel)  # 更新excel中的手机号数据
        return test_data