def no_test_html_dingding(self):  # test_html_dingding前面加个no就不会跑这段代码了
        #加上生成html的代码
        excel_report_file = "ieng_report.xlsx"
        excel_case_time = "0:00:22.744000"
        html_path, pass_count, fail_count = write_html(excel_report_file,
                                                       "Sheet1", "Name",
                                                       "IENG接口测试报告",
                                                       excel_case_time)
        print(pass_count, fail_count)
        print(html_path)
        # 加上 发钉钉消息的代码

        # 获取本机电脑名
        myname = socket.gethostname()
        # print(myname)
        # 获取本机ip
        myaddr = socket.gethostbyname(myname)
        print(myaddr)
        dingding_headers = {
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        }
        #实际的群
        # dingding_url = "https://oapi.dingtalk.com/robot/send?access_token=fd7bfd3d40008e0fed2c5c875ba8710cd53fbd38edcf7a77e94db0f82172f59f"
        #自己的测试群
        dingding_url = "https://oapi.dingtalk.com/robot/send?access_token=305a3658de4c8d9b5c4450564e71a2d4ed7948a9285360651fe1f18aef5e26be"
        dingding_method = "POST"
        dingding_data = {
            "msgtype": "link",
            "link": {
                "text": "",
                "title": "IENG测试环境接口监听报告",
                "picUrl": "",
                "messageUrl": ""
            }
        }
        dingding_data["link"]["text"] = "IENG测试环境接口监听报告:用例总数" + str(
            pass_count + fail_count) + "条,成功" + str(pass_count) + "条,失败" + str(
                fail_count) + "条。"
        dingding_data["link"][
            "messageUrl"] = "http://" + myaddr + ":8081/" + html_path
        dingding_data = json.dumps(dingding_data)
        api_dingding = api_requests(dingding_method, dingding_url,
                                    dingding_data, dingding_headers)
        api_dingding_r = api_dingding.api_requests()
        try:
            dingding1 = api_dingding_r.json()
            dingding2 = json.dumps(
                dingding1
            )  # 将获取返回的json信息转换字符串,再转换为列表,才能直接使用dict,安全一些,因为保证不了接口返回的是不是dict格式【重要】
            print(dingding2)
            dingding3 = json.loads(dingding2)  # 将获取返回的json信息转换字符串,再转换为列表
            print(dingding3)
        except:
            print(u'当前请求,无法直接获取json,或出现无法预料的错误,发送钉钉消息失败')
            if len(api_dingding_r.text) > 0:
                print(api_dingding_r.text)
    def test_all_api(self):
        # self.path_case = os.path.dirname(os.getcwd()) + '\excel_case\caseall01_ALL.xls'
        print(self.path_case)
        excel = readexcel(self.path_case,self.row)  # 调用caseall01文件,全部整合用例
        data = excel.getdata()
        datatype = excel.getdatatype()
        url_openid = excel.getopenid()
        # getbeforedata =excel.getbeforedata()
        getbeforesql = excel.getbeforesql()
        getresql = excel.getresql()
        url_config = excel.config()
        url = excel.geturl()
        method = excel.getmethod()
        # print(method[0])
        # statuscode = excel.getstatuscode()
        getrejson = excel.getrejson()
        if self.row >= 2:
            self.row = self.row  # # # # # #如果self.row大于等于2时,则按传入的self.row的值取数据
            self.m = self.row-1
        elif self.row == 1:
            self.row = excel.getrows()# 如果self.row小于2时,则按excel中实际数据行数请求接口
            self.m = 1
        result = []  #用来存放验证结果
        responsevalue = []  #用来存放返回的数据
        jsonresult = []  #用来存放返回的josn校验判断结果
        false_why = []
        for i in range(self.m, self.row):
            # # 先执行excel中的前置Sql,执行Sql后再继续请求接口# # 获取excel中的前置Sql,执行SQL后再继续请求接口# # 获取excel中的前置Sql,执行Sql后再继续请求接口
            print("共有%d个url,当前第%d个执行开始" % (self.row - 1, i))
            print("============================================")
            print("@@@@@@@@打印先执行前置Sql@@@@@@@@")
            #字段去空格---延后
            getbeforesql_i = getbeforesql[i]
            getresql_i = getresql[i]
            print(getbeforesql_i)
            print(getresql_i)
            url_openid_i = url_openid[i]
            url_i = url[i]
            url_i = url_i.strip()

            #通过配置文件的前置域名拼接URL
            re0 = re.compile(r"http(.*)")
            search1 = re0.search(url_i)
            if search1:
                url_i = url_i
            else:
                url_i= url_config + url_i

            datatype_i = datatype[i]  # DataType为1时,接口请求时,必须转换为json对象,即string类型
            data_backup = data[i]  # 备份此时的data[i],备后面微专场使用
            data_i = data_backup
            data_tmp = ''  # 暂时存放sql获取的id,封装为data
            if getbeforesql_i != '':
                db_before = db_test(getbeforesql_i)
                # db_before = db_dict_test(getbeforesql_i)
                db_before_list = db_before.get_db_item()
                print("@@@@@@@@db_before_list@@@@@@@@")
                print(db_before_list, type(db_before_list))
                print("查询id的长度:", len(db_before_list))
                if db_before_list == ['Sql连接失败']:
                    print(u'当前Sql连接失败,请检查Sql服务器或网络')
                    print(u'跳过当前case,继续下一个case')
                    result.append("FAIL")
                    jsonresult.append("FAIL")
                    responsevalue.append("Sql连接失败")
                    false_why.append("Sql连接失败")
                    continue
                elif db_before_list == [' ']:
                    print("前置Sql执行成功")
                elif len(db_before_list) != 0:
                    data_tmp = db_before_list[0]  # 因为请求地址中必须包含?id=755,所以根据data中@beforedata},与Sql查询的id值进行拼接url
                    print("前置Sql执行成功,封装Sql获取的值", data_tmp, type(data_tmp))
                else:
                    print("前置Sql执行失败")
                    print(u'跳过当前case,继续下一个case')
                    result.append("FAIL")
                    jsonresult.append("FAIL")
                    responsevalue.append("前置Sql执行失败")
                    false_why.append("前置Sql执行失败")
                    continue
            else:
                print("无前置Sql,无需执行")  # 无前置SQL
            print(url_i)


            # 判断data中是否有变量,需要从beforesql中获取
            # 2018-11-20新增的url兼容参数,与data中的参数合并,以url中的参数为准-----【暂且关闭url_beforesql】
            # if ('&url_beforesql' in str(getbeforedata[i])) or ('&URL_BEFORESQL'in str(getbeforedata[i])):
            #     url[i] = url[i] + data_tmp  # 因为请求地址中id的值755是随时变化的,与Sql查询的id值进行实时拼接url【目前只支持1个变量拼接】
            #     print("111111111111111")
            # else:
            #     print("222222222222")
            #

            # 判断data中是否有变量,需要从beforesql中获取

            print("data的原始类型和值")
            print(type(data_i), data_i)
            if len(data_i) == 0:  # 将data字段为空时重定向为{},【】【】【解决思路不错】【】,,可以容错
                data_i = {}  #改为dict
            elif '&data_beforesql' in str(data_i):
                print(type(data_i),data_i)
                data_i = eval(data_i.encode('utf-8'))
                for k, v in data_i.items():
                    if "&data_beforesql" == v:
                        data_i[k] = data_tmp
                print("data中的变量经前置sql赋值33333333333333000000")
            elif '&DATA_BEFORESQL' in str(data_i):
                data_i = eval(data_i.encode('utf-8'))
                for k, v in data_i.items():
                    if "&DATA_BEFORESQL" == v:
                        print(data_tmp,type(data_tmp))
                        data_i[k] = data_tmp
                print("data中的变量经前置sql赋值33333333333333111111")
            else:
                data_i = eval(data_i.encode('utf-8'))
                print(data_i, type(data_i))
                print("data中无变量无需前置sql赋值4444444444444444")


            #2018-11-20新增的url兼容参数,与data中的参数合并,以url中的参数为准
            print(url_i)
            # if "access_token" not in url_i:   #过滤URL中"access_token"的参数,不放到data中
            if "?" in url_i:
                url_parameter = parameter_to_dict(url_i)
                print(type(url_parameter),url_parameter)
                for ii in url_parameter.keys():
                    data_i[ii] = url_parameter[ii]
                url_i = url_i.split("?",1)[0]
            print(url_i)
            print(data_i)
            getrejson_i = getrejson[i]  # 读取excel中数据,str转换成dict字典格式
            if len(getrejson_i) == 0:  # 将正则表达式字段为空的正则表达式重定向为{},【】【】【解决思路不错】【】,,可以容错
                getrejson_i = dict()
            else:
                getrejson_i = ast.literal_eval(getrejson_i)  # ast.literal_eval  方法比  eval  安全
            test01 = list(getrejson_i.keys())  # 取出需要校验的getReJson[i]中的key数组
            # if self.session =='fanliwang':
            #     print(type(data_i),data_i)
            #     data_i=get_data_sign_md5(data_i)
            #     print(type(data_i), data_i)
            #     print(type(data_i), data_i)
            #     headers = {'Content-Type': 'application/json', 'Accept': 'application/json'}
            #     print("正常获取MD5加密后的data")
            # el
            if len(url_openid_i) == 0:
                url_openid_i = '{}'

            if self.session =='ieng':
                print(url_openid_i,type(url_openid_i))
                try:
                    url_openid_i = eval(url_openid_i)  # 先将url_openid_i登录数据处理为dict类型
                except:
                    print("url_openid_i无法转化成dict字典"+type(url_openid_i))
                headers = {}
                headers["Content-Type"] = "application/json; charset=utf-8"
                headers["User-Agent"] = "okhttp/3.10.0"
                data_studentID,cookie = get_ieng_headers(url_openid_i)
                data_i["studentID"] = data_studentID
                headers["Cookie"] = cookie
                if datatype_i == 1 or datatype_i == "1":  # datatype_i为1时,接口请求时,必须转换为json对象,即string类型
                    data_i = json.dumps(data_i)       #自强的客户接口datatype_i必须是json对象(dict),其他人的必须是json字符串 #【通用办法】headers中必须声明'Content-Type': 'application/json', 'Accept': 'application/json'

            elif self.session == 'ieng_wx':
                print(url_openid_i, type(url_openid_i))
                try:
                    url_openid_i = eval(url_openid_i)  # 先将url_openid_i登录数据处理为dict类型
                except:
                    print("url_openid_i无法转化成dict字典" + type(url_openid_i))
                headers = {}
                headers["Content-Type"] = "application/json; charset=UTF-8"
                wx_cookie = get_ieng_family_pro_headers(url_openid_i)
                headers["Cookie"] = wx_cookie
                if datatype_i == 1 or datatype_i == "1":  # datatype_i为1时,接口请求时,必须转换为json对象,即string类型
                    data_i = json.dumps(
                        data_i)  # 自强的客户接口datatype_i必须是json对象(dict),其他人的必须是json字符串 #【通用办法】headers中必须声明'Content-Type': 'application/json', 'Accept': 'application/json'

            elif self.session == 'ieng_wx_tch':
                print(url_openid_i, type(url_openid_i))
                try:
                    url_openid_i = eval(url_openid_i)  # 先将url_openid_i登录数据处理为dict类型
                except:
                    print("url_openid_i无法转化成dict字典" + type(url_openid_i))
                headers = {}
                headers["Content-Type"] = "application/json; charset=UTF-8"
                wx_cookie = get_ieng_teacher_pro_headers(url_openid_i)
                headers["Cookie"] = wx_cookie
                if datatype_i == 1 or datatype_i == "1":  # datatype_i为1时,接口请求时,必须转换为json对象,即string类型
                    data_i = json.dumps(
                        data_i)  # 自强的客户接口datatype_i必须是json对象(dict),其他人的必须是json字符串 #【通用办法】headers中必须声明'Content-Type': 'application/json', 'Accept': 'application/json'

            elif self.session == 'ieng_wx_agt':
                print(url_openid_i, type(url_openid_i))
                try:
                    url_openid_i = eval(url_openid_i)  # 先将url_openid_i登录数据处理为dict类型
                except:
                    print("url_openid_i无法转化成dict字典" + type(url_openid_i))
                headers = {}
                headers["Content-Type"] = "application/json; charset=UTF-8"
                wx_cookie = get_ieng_agent_pro_headers(url_openid_i)
                headers["Cookie"] = wx_cookie
                if datatype_i == 1 or datatype_i == "1":  # datatype_i为1时,接口请求时,必须转换为json对象,即string类型
                    data_i = json.dumps(
                        data_i)  # 自强的客户接口datatype_i必须是json对象(dict),其他人的必须是json字符串 #【通用办法】headers中必须声明'Content-Type': 'application/json', 'Accept': 'application/json'


            elif self.session =='crm':
                print(url_openid_i,type(url_openid_i))
                try:
                    url_openid_i = eval(url_openid_i)  # 先将url_openid_i登录数据处理为dict类型
                except:
                    print("url_openid_i无法转化成dict字典"+type(url_openid_i))
                headers = get_crm_headers(url_openid_i)
                if datatype_i == 1 or datatype_i == "1":  # datatype_i为1时,接口请求时,必须转换为json对象,即string类型
                    data_i = json.dumps(data_i)       #自强的客户接口datatype_i必须是json对象(dict),其他人的必须是json字符串 #【通用办法】headers中必须声明'Content-Type': 'application/json', 'Accept': 'application/json'
            elif self.session == 'soyoung_app':
                print(url_openid_i, type(url_openid_i))
                url_openid_i = eval(url_openid_i)  # 先将url_openid_i登录数据处理为dict类型
                print(url_openid_i, type(url_openid_i))
                app_session1, app_session2 = get_app_token(url_openid_i)
                data_i["xy_token"] = app_session1  #再获取token
                data_i["uid"] = app_session2  # 再获取uid
                data_i = get_app_sign(data_i)  # 再获取签名
                headers = {}
            # elif self.session =='meiledev':
            #     print(type(data_i),data_i)
            #     headers = getmeiledevheaders(url_openid_i)
            # elif self.session =='weizhuanchang':
            #     print(u'微专场的data中变量更新后')
            #     print(type(data_i), data_i)
            #     print("微专场的data,data变量更新后,dump后")
            #     data_i=json.dumps(data_i)
            #     print(type(data_i), data_i)
            #     headers = getweizhuanchangheaders(url_openid_i)
            elif self.session =='xiaochengxu':
                print(u'微专场的data中变量更新后')
                print(type(data_i), data_i)
                print("微专场的data,data变量更新后,dump后")
                data_i=json.dumps(data_i)
                print(type(data_i), data_i)
                headers = get_xiaochengxu_headers(url_openid_i)
            elif self.session =='saas':
                print(type(data_i), data_i)
                headers = getsaasheaders(url_openid_i)
            else:
                headers ={}
            api = api_requests(method[i], url_i, data_i, headers)  # 判断接口方法函数
            api_r = api.api_requests()  # 这样可以省得调用两次request#这样可以省得调用两次request#这样可以省得调用两次request
            try:
                apijson = api_r.json()
            except:
                print(u'当前请求,无法直接获取json,或出现无法预料的错误')
                # if len(api_r.text)>0:
                #     print(api_r.text)
                print(u'跳过当前case,继续下一个case')
                result.append("FAIL")
                jsonresult.append("FAIL")
                # print(api_r.text)

                if isinstance(api_r, str):
                    if len(api_r) ==0 :
                        responsevalue.append("接口返回为空")
                    else:
                        responsevalue.append(api_r)
                else:
                    responsevalue.append(str(api_r))
                # responsevalue.append("接口请求无法直接获取json,或出现无法预料的错误")
                false_why.append("接口请求无法直接获取json,或出现无法预料的错误")
                continue
            # print('接口返回的json格式缩进展示:')
            # print(json.dumps(apijson,ensure_ascii=False, indent=4)) # indent是缩进的意思,数字4是缩进的程度,ensure_ascii默认为true,会将非ASCII码字符显示为\uXXXX序列
            apijson2 = json.dumps(apijson)  # 将获取返回的json信息转换字符串,再转换为列表,才能直接使用dict,安全一些,因为保证不了接口返回的是不是dict格式【重要】
            print(apijson2)
            jsondata = json.loads(apijson2)  # 将获取返回的json信息转换字符串,再转换为列表
            print(jsondata)
            # 校验正则#校验正则#校验正则#校验正则#校验正则#校验正则#校验正则#校验正则#校验正则#校验正则
            stra = str(apijson)  # 将json转换为字符串,使用in方法判断是否有该字段,str化,取apijson、apijson2、data都可以
            temp = True
            temp2=''
            if len(getresql_i) !=0:
                print("@@@@@@@@打印获取数据库中的SQL中各个key列表@@@@@@@@")
                print(getresql_i)
                print("@@@@@@@@打印获取数据库中的SQL语句@@@@@@@@"+getresql_i)
                db_order_id = db_dict_test(getresql_i)
                db_order_id_list = db_order_id.get_db_item()
                print("@@@@@@@@SQL中各个key@@@@@@@@")
                print(db_order_id_list, type(db_order_id_list))
                if len(test01) == 0:  #主要为了看【无正则表达式】时的RESQL查询的key与请求结果比对问题
                    print(
                        "@@@@@@@@取ReSql有数据,正则表达式无数据@@@@@@@@")
                    if len(db_order_id_list)==0:
                        print("sql语句查询结果为空")
                    else:
                        for each in db_order_id_list:
                            for each1 in each :
                                tmp_list01 = []  # 暂时用于传参,有时间优化下
                                tmp_list02 = []  # 暂时用于传参,有时间优化下
                                print('我的全参数1的SQL校验key结果:    ' + each1)

                                #获取json中的key对应的所有value
                                tmp_list1 = get_dict_value(each1, jsondata, tmp_list01)
                                #如果返回的json中有key的velue是一个数组,且该数组中的元素不是字典类型,需要做下处理
                                #先判断tmp_list1是【只有一个元素】,再判断tmp_list1[0]为数组类型,如果是数组,则只取tmp_list1[0]赋给tmp_list1
                                if len(tmp_list1)==1 and isinstance(tmp_list1[0], list):
                                    tmp_list1=tmp_list1[0]
                                    print('我的json查询1的key列表:    ' + each1+",该key的value是个纯数组类型,即非标准的字典键值对,已做处理")
                                print('我的json查询1的key列表:    ' + each1)
                                print(tmp_list1, type(tmp_list1))

                                tmp_list2 = get_list_tuple_value2(each1, db_order_id_list, tmp_list02)
                                print('我的SQL查询1的key列表:    ' + each1)
                                print(tmp_list2, type(tmp_list2))
                                if list_compare_all(tmp_list2, tmp_list1):      #数组序列按有序匹配
                                    print("通过sql查询1的key " + each1 + " 序列与接口返回的key " + each1 + " 序列【一致】")
                                else:
                                    print("通过sql查询1的key " + each1 + " 序列与接口返回的key " + each1 + " 序列【不一致】")  # 接口有可能返回的是第几页的
                                    temp = False
                                    temp2 ="通过sql查询1的key " + each1 + " 序列与接口返回的key " + each1 + " 序列【不一致】"
                                    break
                            if temp == False:
                                break
                else:
                    if len(db_order_id_list)==0:
                        print("sql语句查询结果为空,则无法继续校验,用例执行校验结果为:失败")
                        temp = False
                    elif "Sql连接失败" in str(db_order_id_list):
                        print("Sql连接失败,则无法继续校验,用例执行校验结果为:失败")
                        temp = False
                    else:
                        each000=db_order_id_list[0]        #需要修改按数组取
                        print("sql查询回的数组序列,的每一个元素,打印查验下类型")
                        # print(each000,type(each000))
                        for each in each000.keys():
                            print(each, type(each))
                            tmp_list01 = []  # 暂时用于传参,有时间优化下
                            tmp_list02 = []  # 暂时用于传参,有时间优化下
                            tmp_list00 = []  # 暂时用于传参,有时间优化下
                            tmp_list = get_dict_value(each, jsondata, tmp_list00)  # 调用字典取key的所有值函数
                            print("当前的校验的 " + each + " 在SQL查询到的各个key中")
                            print("正则字符串中有key " + each + " ,打印返回语句中的 " + each + " 的所有value列表: ")
                            print(tmp_list, type(tmp_list))
                            print('我的全参数2的SQL校验key结果:    ' + each)
                            # 获取json中的key对应的所有value
                            tmp_list1 = get_dict_value(each, jsondata, tmp_list01)
                            # 如果返回的json中有key的velue是一个数组,且该数组中的元素不是字典类型,需要做下处理
                            # 先判断tmp_list1是【只有一个元素】,再判断tmp_list1[0]为数组类型,如果是数组,则只取tmp_list1[0]赋给tmp_list1
                            if len(tmp_list1) == 1 and isinstance(tmp_list1[0], list):
                                tmp_list1 = tmp_list1[0]
                                print('我的json查询1的key列表:    ' + each + ",该key的value是个纯数组类型,即非标准的字典键值对,已做处理")
                            print('我的json查询到2的key列表:    ' + each)
                            print(tmp_list1, type(tmp_list1))
                            print(type(db_order_id_list))
                            tmp_list2 = get_list_tuple_value2(each, db_order_id_list, tmp_list02)
                            print('我的SQL查询2的key列表:    ' + each)
                            print(type(tmp_list2))
                            print(tmp_list2, type(tmp_list2))
                            if list_compare_all(tmp_list2, tmp_list1):  # 数组序列按有序匹配
                                print("通过sql查询2的key " + each + " 序列与接口返回的key " + each + " 序列【一致】")
                            else:
                                print(
                                    "通过sql查询2的key " + each + " 序列与接口返回的key " + each + " 序列【不一致】")  # 接口有可能返回的是第几页的
                                temp = False
                                temp2 = "通过sql查询2的key " + each + " 序列与接口返回的key " + each + " 序列【不一致】"
                                break
                    if temp != False:   #SQL精确查询校验后,再校验正则
                        for each in test01:
                            tmp_list00 = []  # 暂时用于传参,有时间优化下
                            tmp_list = get_dict_value(each, jsondata, tmp_list00)  # 调用字典取key的所有值函数
                            if each in stra:  # 将json转换为字符串,使用in方法判断是否有该字段
                                if each in str(db_order_id_list):
                                    print("当前的校验的 " + each + " 在SQL查询到的各个key中,则跳过正则校验")
                                else:
                                    print("当前的校验的 " + each + " 不在SQL查询到的各个key中")
                                    re1 = re.compile(str(getrejson_i[each]))  # 取Excel正则参数来校验
                                    print('我的全参数2的正则校验结果:    ' + each)
                                    temp = get_re_list(re1, tmp_list)  # 调用#正则匹配序列函数
                                    if temp == False:
                                        temp2 = '我的全参数2的正则校验结果:    ' + each + '   校验失败'
                                        break
                            else:
                                temp = False  # 如果结果不对,写False,如果有message就写,没有就全写入
                                print('该返回json中没有找到对应的keys: '+each+' ,无需调用校验函数,直接匹配失败')
                                temp2 ='该返回json中没有找到对应的keys: '+each+' ,无需调用校验函数,直接匹配失败'
                                break
                    else:
                        print('该SQL精确校验失败,无需进行正则校验')
                if temp:
                    temp = "PASS"
                else:
                    temp = "FAIL"
                jsonresult.append(temp)  # 调用#正则匹配序列函数
                false_why.append(temp2)
            else:
                print("ReSql无数据,打印跳过ReSql的校验")
                if len(test01) == 0:  # 多余的判断,主要为了看无正则表达式时的流程问题
                    print(
                        "@@@@@@@@因ReSql无数据,且无正则表达式,则校验通过@@@@@@@@")
                else:
                    for each in test01:
                        if each in stra:  # 将json转换为字符串,使用in方法判断是否有该字段
                            tmp_list = []  # 暂时用于传参,有时间优化下
                            tmp_list1 = get_dict_value(each, jsondata, tmp_list)  # 调用字典取key的所有值函数
                            re1 = re.compile(str(getrejson_i[each]))  # 取Excel正则参数来校验
                            print('我的全参数3的正则校验结果:    ' + each)
                            temp = (get_re_list(re1, tmp_list1))  # 调用#正则匹配序列函数
                            if temp ==False:
                                temp2='我的全参数3的正则校验结果:    ' + each+'   校验失败'
                                break
                        else:
                            temp = False  # 如果结果不对,写False,如果有message就写,没有就全写入
                            print('该返回json中没有找到对应的keys,无需调用校验函数,直接匹配失败')
                            temp2 ='该返回json中没有找到对应的keys: '+each+' ,无需调用校验函数,直接匹配失败'
                            break
                if temp:
                    temp = "PASS"
                else:
                    temp = "FAIL"
                jsonresult.append(temp)  # 调用#正则匹配序列函数
                false_why.append(temp2)
            responsevalue.append(json.dumps(apijson, ensure_ascii=False))
            print('共有%d个url,当前第%d个执行完毕' % (self.row - self.m, i))
            print("============================================")
            print("============================================")
            print("============================================")
            print("============================================")
            print("============================================")
        print("共有多少个数量需要输出到报告里:")
        print(len(jsonresult))
        print(len(responsevalue))
        print(len(false_why))
        newexcel = excel.openpyxl_read_sheet()
        # sheet1 = newexcel["Sheet1"]
        # 默认获取第一个工作sheet
        sheet1 = newexcel.worksheets[0]
        jsonresult_index = excel.getallcol().index('Status') +1
        responsevalue_index = excel.getallcol().index('ActualResult') +1
        false_why_index = excel.getallcol().index('FalseWhy') + 1
        if self.m==1:
            for j in range(2, self.row+1):
                sheet1.cell(j, jsonresult_index).value = jsonresult[j - 2]  # 正则校验
                sheet1.cell(j, responsevalue_index).value = responsevalue[j - 2]  # json
                sheet1.cell(j, false_why_index).value = false_why[j - 2]  # json
        elif self.m != 1:
            for j in range(self.row, self.row+1):
                sheet1.cell(j, jsonresult_index).value = jsonresult[j - self.row]  # 正则校验
                sheet1.cell(j, responsevalue_index).value = responsevalue[j - self.row]  # json
                sheet1.cell(j, false_why_index).value = false_why[j - self.row]  # json
        # if self.session == 'fanliwang':
        #     path_report = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'excel_report', 'flw_report.xlsx')
        # el
        if self.session == 'ieng':
            excel_report_file = "ieng_report.xlsx"
            path_report = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'excel_report', excel_report_file)

        elif self.session == 'ieng_wx' or self.session == 'ieng_wx_tch' or self.session=='ieng_wx_agt':
            excel_report_file = "ieng_wx_report.xlsx"
            path_report = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'excel_report', excel_report_file)

        elif self.session == 'crm':
            excel_report_file = "crm_report.xlsx"
            path_report = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'excel_report', excel_report_file)
        elif self.session == 'soyoung_app':
            excel_report_file = "soyoung_app_report.xlsx"
            path_report = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'excel_report',excel_report_file)
        # elif self.session == 'weizhuanchang':
        #     excel_report_file = weizhuanchang_report.xlsx
        #     path_report = excel_report_file
        # elif self.session == 'meiledev':
        #     excel_report_file = "mlx_report.xlsx"
        #     path_report = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'excel_report', excel_report_file)
        elif self.session == 'xiaochengxu':
            excel_report_file = "xiaochengxu_report.xlsx"
            path_report = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'excel_report', excel_report_file)
        elif self.session == 'saas':
            excel_report_file = "saas_mlx_report.xlsx"
            path_report = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'excel_report', excel_report_file)
        else:
            excel_report_file = "result.xlsx"
            path_report = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'excel_report', excel_report_file)
        print(path_report)
        try:
            newexcel.save(path_report)
        except:
            print("对不起,由于您目前打开了正要保存的report文件,请关闭该报告后,再次执行相应自动化用例")