示例#1
0
class RunTest:
    def __init__(self):
        self.run_method = RunMethod()
        self.data = GetData()
        self.common_util = CommonUtil()
        self.email = SendEmail()

    def go_on_run(self):
        """获取用例行数"""
        row_count = self.data.get_case_line()
        print("用例行数:", row_count)
        pass_count = []
        fail_count = []

        #循环执行用例
        for i in range(1, row_count):
            is_run = self.data.get_is_run(i)
            print("i的值:", i)
            print("is_run:", is_run)
            if is_run:
                url = self.data.get_url(i)
                print("url:", url)
                request_type = self.data.get_request_type(i)
                print("request_type:", request_type)
                data = self.data.get_data_for_json(i)
                print("data:", data)
                #dependent_case = self.data.is_depend(i)
                dependent_more_case = self.data.is_more_depend(i, 0)
                print("dependent_more_case:", dependent_more_case)
                if dependent_more_case != None:
                    self.dependent_data = DependentData(dependent_more_case)
                    #获取依赖的响应数据
                    dependent_response_data = self.dependent_data.get_data_for_key(
                        i, 0)
                    print("dependent_response_data", dependent_response_data)
                    token_value = self.common_util.getToken(0)
                    token_header = self.data.get_token_header(i, token_value)
                    print("token_header:", token_header)
                    if url == "http://182.61.33.241:8089/app/api/private/1.0/client/":
                        new_url = url + dependent_response_data
                        print("------------------------------------")
                        print("new_url:", new_url)
                        result = self.run_method.run_main(
                            request_type, new_url, data, token_header)
                    else:
                        #获取依赖的key
                        depend_key = self.data.get_dependent_key(i, 0)
                        print("depend_key", depend_key)
                        jsonData = json.loads(data)
                        print("data:", data)
                        jsonData[depend_key] = dependent_response_data
                        requestData = json.dumps(jsonData)
                        result = self.run_method.run_main(
                            request_type, url, requestData, token_header)
                else:
                    if i == 1:
                        header = self.data.get_header(i)
                        print("header:", header)
                        #result = self.run_method.post_main(url, data, header)
                        result = self.run_method.run_main(
                            request_type, url, data, header)
                        res = json.loads(result)
                        #获取token值
                        with open(self.common_util.base_dir(), 'w') as f:
                            f.write(res["data"]["token"] + "," +
                                    res["data"]["id"])
                        print("获取token:", res["data"]["token"])
                    else:
                        token_value = self.common_util.getToken(0)
                        token_header = self.data.get_token_header(
                            i, token_value)
                        if url == "http://182.61.33.241:8089/app/api/private/1.0/follow/clientpage":
                            oper_id = self.common_util.getToken(1)
                            jsonData = json.loads(data)
                            jsonData["operId"] = oper_id
                            request_data = json.dumps(jsonData)
                            result = self.run_method.run_main(
                                request_type, url, request_data, token_header)
                        else:
                            result = self.run_method.run_main(
                                request_type, url, data, token_header)
                print("返回结果:", result)
                except_res = self.data.get_except(i)
                print("except_res:", except_res)
                if self.common_util.is_contain(except_res, result):
                    self.data.write_result(i, "测试通过")
                    print("测试通过")
                    pass_count.append(i)
                else:
                    self.data.write_result(i, "测试失败")
                    print("测试失败")
                    fail_count.append(i)
            print("打印结果:", result)
        print("通过数:", len(pass_count))
        print("失败数:", len(fail_count))
        # self.email.send_main(pass_count, fail_count)
        return result
示例#2
0
class GuestCase:
    def __init__(self):
        self.json_file = "/Users/mac/Desktop/测试资料/蜗牛家产品线/woniujia_cc_jiekou/woniujia_cc_jiekou_git/woniujia_cc_project/dataconfig/request_pram.json"
        self.sheet_name = "客户模块"
        self.sheet_id = 5
        self.data = GetData(self.json_file, self.sheet_name, self.sheet_id)
        self.run_method = RunMethod()
        self.util = CommonUtil()
        self.email = SendEmail()

    def go_to_guest(self):
        # self.run_comm = RunCommon(self.excel_file, self.json_file)
        # self.run_comm.go_run_case()
        # 获取用例行数
        row_count = self.data.get_case_line()
        pass_count = []
        fail_count = []
        for i in range(1, row_count):
            is_run = self.data.get_is_run(i)
            if is_run:
                url = self.data.get_url(i)
                request_type = self.data.get_request_type(i)
                data = self.data.get_data_for_json(i)
                if i == 1:
                    header = self.data.get_header(i)
                    response = self.run_method.run_main(
                        request_type, url, data, header)
                    res = json.loads(response)
                    # 获取token、operid并写入文件中
                    with open(self.util.base_dir(), 'w') as f:
                        f.write(res["data"]["token"] + "," + res["data"]["id"])
                else:
                    token = self.util.getToken(0)
                    token_header = self.data.get_token_header(i, token)
                    depend_morecase = self.data.is_more_depend(i, 0)
                    # 判断是否存在依赖
                    if depend_morecase != None:
                        self.depend_data = DependentData(
                            depend_morecase, self.excel_file, self.json_file)
                        dependent_response_data = self.depend_data.get_data_for_key(
                            i, 0)
                        depend_key = self.data.get_dependent_key(i, 0)
                        print("depend_key", depend_key)
                        if url == "http://182.61.33.241:8089/app/api/private/1.0/client/":
                            request_url = url + dependent_response_data
                            response = self.run_method.run_main(
                                request_type, request_url, data, token_header)
                        if url == "http://182.61.33.241:8089/app/api/private/1.0/reporting/addorupdate":
                            depend_param2 = self.data.is_more_depend(i, 1)
                            self.depend_data2 = DependentData(
                                depend_param2, self.excel_file, self.json_file)
                            dependent_response_data2 = self.depend_data2.get_data_for_key(
                                i, 1)
                            depend_key2 = self.data.get_dependent_key(i, 1)
                            jsonData = json.loads(data)
                            jsonData[depend_key] = dependent_response_data
                            jsonData[depend_key2] = dependent_response_data2
                            requestData = json.dumps(jsonData)
                            response = self.run_method.run_main(
                                request_type, url, requestData, token_header)
                        else:
                            jsonData = json.loads(data)
                            print("data:", data)
                            jsonData[depend_key] = dependent_response_data
                            requestData = json.dumps(jsonData)
                            response = self.run_method.run_main(
                                request_type, url, requestData, token_header)
                    else:
                        if url == "http://182.61.33.241:8089/app/api/private/1.0/follow/clientpage":
                            oper_id = self.util.getToken(1)
                            json_data = json.loads(data)
                            json_data["operId"] = oper_id
                            request_data = json.dumps(json_data)
                            response = self.run_method.run_main(
                                request_type, url, request_data, token_header)
                        else:
                            response = self.run_method.run_main(
                                request_type, url, data, token_header)

                expect_res = self.data.get_except(i)
                print("期望结果:", expect_res)
                if self.util.is_contain(expect_res, response):
                    self.data.write_result(i, "测试通过", self.sheet_id)
                    pass_count.append(i)
                    print("测试通过")
                else:
                    self.data.write_result(i, "测试失败", self.sheet_id)
                    fail_count.append(i)
                    print("测试失败")
                self.data.write_response(i, response, self.sheet_id)
        self.email.send_main(pass_count, fail_count)
        return response
示例#3
0
class Run:
    def __init__(self, json_file, sheet_name, sheet_id, sql_base=None):
        self.json_file = json_file
        self.sheet_name = sheet_name
        self.sheet_id = sheet_id
        self.sql_base = sql_base
        self.data = GetData(self.json_file, self.sheet_name)
        self.run_method = RunMethod()
        self.util = CommonUtil()
        self.email = SendEmail()

    # 连接数据库,查询某字段的所有记录、总数、页数
    def get_sql_expect(self, i, sql_key):
        token = self.util.getToken(0)
        operid = self.util.getToken(1)
        # token_header = self.data.get_token_header(i, token)
        expect_res = self.data.get_except_data_for_sql(
            i, self.sql_base)  # 获取数据库返回的所有楼盘记录(返回类型:数组型)
        expect_value_list = []
        if len(expect_res) == 0:
            count = 0
            new_count = 1
            return count, new_count, expect_value_list
        else:
            for expect_index in range(0, len(expect_res)):
                expect_value = expect_res[expect_index][
                    sql_key]  # 循环获取数据库返回的某个字段
                expect_value_list.append(expect_value)  # 将数据库中所有该字段存入该数组中
            count = len(expect_value_list)
            if count / 15 < 1:
                new_count = 1
            elif (count / 15) >= 1 and (count % 15) >= 1:
                new_count = int(count / 15) + 1
            else:
                new_count = int(count / 15)
            return count, new_count, expect_value_list

    # 获取response
    def is_depend(self, i, depend_morecase, request_type, url, token_header,
                  data):
        # 判断是否存在依赖
        if depend_morecase != None:
            depend_data = DependentData(depend_morecase, self.sheet_name,
                                        self.json_file)
            dependent_response_data = depend_data.get_data_for_key(i, 0)
            if request_type == "get":
                request_url = url + dependent_response_data
                response = self.run_method.run_main(request_type, request_url,
                                                    data, token_header)
            else:
                depend_key = self.data.get_dependent_key(i, 0)
                jsonData = json.loads(data)
                jsonData[depend_key] = dependent_response_data
                requestData = json.dumps(jsonData)
                response = self.run_method.run_main(
                    request_type, url, requestData,
                    token_header)  # 获取接口返回数据(返回类型:string型)
        else:
            response = self.run_method.run_main(
                request_type, url, data,
                token_header)  # 获取接口返回数据(返回类型:string型)
        return response

    # 判断expect表中记录和response列表记录是否相等,返回result是True或者False
    def get_result(self, count, expect_value_list, response, response_key):
        is_result = True
        response_dict = json.loads(response)  # 将response字符串型转换成字典型
        # if self.type == "data":
        #     response_list = response_dict['data']
        # elif self.type == "list":
        #     response_list = response_dict['data']['list']
        response_dict_data = response_dict['data']
        if 'list' in response_dict_data:
            response_list = response_dict['data']['list']
        else:
            response_list = response_dict_data
        if len(response_list) == count:
            is_result = True
        else:
            for response_index in range(len(response_list)):
                response_name = response_list[response_index][
                    response_key]  # 循环获取接口返回的字段名称
                if self.util.is_contain(
                        response_name,
                        expect_value_list):  # 判断如果接口返回的xx字段存在数据库xx字段数组中,则测试通过
                    is_result = True
                else:
                    is_result = False
        return is_result

    # 判断expect表中记录的总数和response中某字段的数量是否相等,返回result是True或者False
    def get_result_count(self, count, response, response_key):
        response_dict = json.loads(response)  # 将response字符串型转换成字典型
        response_opt = response_dict['data'][response_key]
        if int(response_opt) == count:
            result = True
        else:
            result = False
        return result

    # 写入实际结果
    def write_result(self, fail_count, i, pass_count, result):
        if result:
            self.data.write_result(i, "测试通过", self.sheet_id)
            pass_count.append(i)
            print("测试通过")
        else:
            self.data.write_result(i, "测试失败", self.sheet_id)
            fail_count.append(i)
            print("测试失败")

    # 执行用例
    def go_to_run(self):
        # 获取用例行数
        row_count = self.data.get_case_line()
        pass_count = []
        fail_count = []
        result = True
        # 循环用例
        for i in range(1, row_count):
            # 获取isrun,是否运行该用例
            is_run = self.data.get_is_run(i)
            response_key = self.data.get_response_key(i)
            sql_key = self.data.get_sql_key(i)
            sql_type = self.data.get_sql_type(i)
            if is_run:
                url = self.data.get_url(i)
                request_type = self.data.get_request_type(i)
                is_connect = self.data.get_is_conn_db(
                    i)  # 获取是否连接数据库,若是则执行sql,若不是直接获取期望结果
                depend_morecase = self.data.is_more_depend(i, 0)  # 获取依赖数据
                data = self.data.get_data_for_json(i)
                if is_connect:
                    token = self.util.getToken(0)
                    token_header = self.data.get_token_header(i, token)
                    # 获取预期结果
                    count = self.get_sql_expect(i, sql_key)[0]  # 数据库查询结果记录总数
                    new_count = self.get_sql_expect(i,
                                                    sql_key)[1]  # 获取接口执行次数,翻页
                    expect_value_list = self.get_sql_expect(
                        i, sql_key)[2]  # 获取某个字段在表中的所有值
                    # 获取返回数据
                    response = self.is_depend(i, depend_morecase, request_type,
                                              url, token_header, data)
                    if sql_type == "count":
                        # 比较接口返回的总数与数据库查询出的记录总数是否相等,相等返回True
                        actrual_result = self.get_result_count(
                            count, response, response_key)
                    else:
                        for n in range(1, new_count + 1):
                            data = self.data.get_data_for_newjson(
                                i, '"' + str(n) + '"')
                            # 比较预期结果和返回结果是否相等,相同返回result=True
                            actrual_result = self.get_result(
                                count, expect_value_list, response,
                                response_key)
                    self.write_result(fail_count, i, pass_count,
                                      actrual_result)
                else:
                    expect_res = self.data.get_except(i)
                    if i == 1:
                        header = self.data.get_header(i)
                        response = self.run_method.run_main(
                            request_type, url, data, header)
                        res = json.loads(response)
                        # 获取token、operid并写入文件中
                        with open(self.util.base_dir(), 'w') as f:
                            f.write(res["data"]["token"] + "," +
                                    res["data"]["id"])
                        # print("获取token:", res["data"]["token"])
                    else:
                        token = self.util.getToken(0)
                        operid = self.util.getToken(1)
                        token_header = self.data.get_token_header(i, token)
                        response = self.is_depend(i, depend_morecase,
                                                  request_type, url,
                                                  token_header, data)
                        # response = self.run_method.run_main(request_type, url, data, token_header)
                    # print("返回结果:", response)
                    result = self.util.is_contain(expect_res, response)
                    self.write_result(fail_count, i, pass_count, result)

                self.data.write_response(i, response, self.sheet_id)
        # self.email.send_main(pass_count, fail_count)
        return response
示例#4
0
class RunCommon:
    def __init__(self, json_file, sheet_name, sheet_id):
        # self.excel_file = excel_file
        self.json_file = json_file
        self.sheet_name = sheet_name
        self.sheet_id = sheet_id
        self.data = GetData(self.json_file, self.sheet_name)
        self.run_method = RunMethod()
        self.util = CommonUtil()
        self.email = SendEmail()

    def go_run_case(self):
        # 获取用例行数
        row_count = self.data.get_case_line()
        pass_count = []
        fail_count = []
        # 循环用例
        for i in range(1, row_count):
            # 获取isrun,是否运行该用例
            is_run = self.data.get_is_run(i)
            if is_run:
                #model = self.data.get_model(i)
                url = self.data.get_url(i)
                data = self.data.get_data_for_json(i)
                request_type = self.data.get_request_type(i)
                if i == 1:
                    header = self.data.get_header(i)
                    #request_data = self.data.get_data_for_json(i)
                    response = self.run_method.run_main(
                        request_type, url, data, header)
                    print("返回结果:", response)
                    res = json.loads(response)
                    # 获取token、operid并写入文件中
                    with open(self.util.base_dir(), 'w') as f:
                        f.write(res["data"]["token"] + "," + res["data"]["id"])
                    print("获取token:", res["data"]["token"])
                else:
                    token = self.util.getToken(0)
                    operid = self.util.getToken(1)
                    token_header = self.data.get_token_header(i, token)
                    depend_morecase = self.data.is_more_depend(i, 0)
                    #判断是否存在依赖
                    if depend_morecase != None:
                        self.depend_data = DependentData(
                            depend_morecase, self.sheet_name, self.json_file)
                        dependent_response_data = self.depend_data.get_data_for_key(
                            i, 0)
                        depend_key = self.data.get_dependent_key(i, 0)
                        print("depend_key", depend_key)
                        jsonData = json.loads(data)
                        print("data:", data)
                        jsonData[depend_key] = dependent_response_data
                        requestData = json.dumps(jsonData)
                        response = self.run_method.run_main(
                            request_type, url, requestData, token_header)
                    else:
                        if self.data.get_model(i) == "用户更新":
                            jsonData = json.loads(data)
                            jsonData['id'] = operid
                            requestData = json.dumps(jsonData)
                            response = self.run_method.run_main(
                                request_type, url, requestData, token_header)
                        else:
                            response = self.run_method.run_main(
                                request_type, url, data, token_header)
                expect_res = self.data.get_except(i)
                print("期望结果:", expect_res)
                if self.util.is_contain(expect_res, response):
                    self.data.write_result(i, "测试通过", self.sheet_id)
                    pass_count.append(i)
                    print("测试通过")
                else:
                    self.data.write_result(i, "测试失败", self.sheet_id)
                    fail_count.append(i)
                    print("测试失败")
                self.data.write_response(i, response, self.sheet_id)
        #self.email.send_main(pass_count, fail_count)
        return response