Ejemplo n.º 1
0
    def run_test2(self, relevance_case, result_id, test_case_list):
        md = self.md
        conn = self.conn
        cur = self.cur
        for x in range(len(test_case_list)):
            if int(test_case_list[x]['num']) == int(relevance_case):
                LogPrint().info("----------先调用被关联的第" + str(relevance_case) +
                                "个测试用例的接口----------")

                ifd = InterfaceDeal(test_case_list[x]['num'],
                                    test_case_list[x]['api_purpose'],
                                    test_case_list[x]['request_url'],
                                    test_case_list[x]['request_method'],
                                    test_case_list[x]['request_data_type'],
                                    test_case_list[x]['request_data'],
                                    test_case_list[x]['check_point'],
                                    test_case_list[x]['test_describe'],
                                    test_case_list[x]['relevance_case'])
                result_temp2, response = ifd.interface_test()

                LogPrint().info(
                    "----------------根据用例执行情况,开始更新测试结果表的相关数据----------------")
                if result_temp2 == 'success':
                    CommonMethod.sql_deal_two(md, conn, cur, 'success_num',
                                              result_id)
                elif result_temp2 == 'fail':
                    CommonMethod.sql_deal_two(md, conn, cur, 'fail_num',
                                              result_id)
                elif result_temp2 == 'error':
                    CommonMethod.sql_deal_two(md, conn, cur, 'error_num',
                                              result_id)
                else:
                    LogPrint().info(
                        "----------------更新测试结果表失败,原因未知----------------")

                return response
            else:
                continue
Ejemplo n.º 2
0
    def run_test(self, result_id, test_case_list):
        check_list = []  # 用来核对某个用例是否已经执行过
        md = self.md
        conn = self.conn
        cur = self.cur
        # 该值是interface_test()函数处理完接口,并且断言完毕返回的结果,需要根据该结果更新test_result_data表的内容
        result_temp = ''
        for x in range(len(test_case_list)):
            # 循环所有的测试用例,先判断该用例是否已执行过,如果不在check_list中,则代表未执行过
            if int(test_case_list[x]['num']) not in check_list:
                # 未执行过的用例,再判断下该用例是否有关联的测试用例,如果测试用例的relevance_case字段值不为0,则代表有关联的用例
                if int(test_case_list[x]['relevance_case']) != 0:
                    LogPrint().info("----------开始调用第" +
                                    test_case_list[x]['num'] +
                                    "个测试用例的接口----------")
                    # 先去执行被关联的测试用例
                    for y in range(len(test_case_list)):
                        # 如果被关联的测试用例接口未执行过,那么就需要循环到被关联的接口,让它执行一次
                        if int(test_case_list[x]
                               ['relevance_case']) not in check_list:
                            # 如果已循环到该未执行过的被关联的接口
                            if int(test_case_list[y]['num']) == int(
                                    test_case_list[x]['relevance_case']):
                                # 先执行被关联的接口
                                result_two = self.run_test2(
                                    test_case_list[x]['relevance_case'],
                                    result_id, test_case_list)
                                LogPrint().info("----------继续调用第" +
                                                test_case_list[x]['num'] +
                                                "个测试用例的接口----------")
                                # 执行完毕后将该用例的编号存入到检查列表中,防止再次执行
                                check_list.append(
                                    int(test_case_list[x]['relevance_case']))

                                # 处理请求接口的数据,将被关联的接口数据赋值给请求的接口数据中
                                request_data_last = CommonMethod.request_data_deal(
                                    test_case_list[x]['request_data'],
                                    result_two)
                                ifd = InterfaceDeal(
                                    test_case_list[x]['num'],
                                    test_case_list[x]['api_purpose'],
                                    test_case_list[x]['request_url'],
                                    test_case_list[x]['request_method'],
                                    test_case_list[x]['request_data_type'],
                                    request_data_last,
                                    test_case_list[x]['check_point'],
                                    test_case_list[x]['test_describe'],
                                    test_case_list[x]['relevance_case'])
                                result_temp, response = ifd.interface_test()
                                check_list.append(int(
                                    test_case_list[x]['num']))

                            # 如果未循环到该关联的接口
                            else:
                                LogPrint().info('-----不是被关联的用例----')
                                continue

                        # 如果被关联的接口已执行过,那么就不需要用到这里的for y 的循环了
                        elif int(test_case_list[x]
                                 ['relevance_case']) in check_list:
                            # 如果请求的接口未执行过
                            if int(test_case_list[x]['num']) not in check_list:
                                LogPrint().info(
                                    "----------该用例所关联的接口已执行,继续调用第" +
                                    test_case_list[x]['num'] +
                                    "个测试用例的接口----------")
                                result_temp = 'execute yet'
                                sql_two = 'select response from test_case where case_id = %d order by create_time desc ' \
                                          'limit 1' % (int(test_case_list[x]['relevance_case']))
                                result = md.select_db(conn, cur, sql_two)
                                result_two = result[0][0]

                                # 处理请求接口的数据,将被关联的接口数据赋值给请求的接口数据中
                                request_data_last = CommonMethod.request_data_deal(
                                    test_case_list[x]['request_data'],
                                    result_two)
                                ifd = InterfaceDeal(
                                    test_case_list[x]['num'],
                                    test_case_list[x]['api_purpose'],
                                    test_case_list[x]['request_url'],
                                    test_case_list[x]['request_method'],
                                    test_case_list[x]['request_data_type'],
                                    request_data_last,
                                    test_case_list[x]['check_point'],
                                    test_case_list[x]['test_describe'],
                                    test_case_list[x]['relevance_case'])
                                result_temp2, response = ifd.interface_test()
                                check_list.append(int(
                                    test_case_list[x]['num']))

                                LogPrint().info(
                                    "----------------根据用例执行情况,开始更新测试结果表的相关数据----------------"
                                )
                                if result_temp2 == 'success':
                                    CommonMethod.sql_deal_two(
                                        md, conn, cur, 'success_num',
                                        result_id)
                                elif result_temp2 == 'fail':
                                    CommonMethod.sql_deal_two(
                                        md, conn, cur, 'fail_num', result_id)
                                elif result_temp2 == 'error':
                                    CommonMethod.sql_deal_two(
                                        md, conn, cur, 'error_num', result_id)

                            else:
                                LogPrint().info('-----该请求接口已执行----')

                # 未执行的用例,没有关联其他的测试用例,则直接调用interface_test函数,处理该接口即可
                else:
                    '''
                    这里接口没有关联其他接口,但是可能请求的参数中,会用到已单独封装的接口返回数据,或者其他随机函数的数据,所以需要将接口请求参数
                     另外再做处理,将未赋值的参数赋值,这里必须要有"data"数据,因为该函数还需要处理其他接口返回的值,这里为方便不修改代码先这样
                    '''
                    if test_case_list[x]['request_data_type'] == 'File':
                        request_data_last = CommonMethod.request_type_file(
                            test_case_list[x]['request_data'],
                            test_case_list[x]['num'])
                    else:
                        request_data_last = CommonMethod.request_data_deal(
                            test_case_list[x]['request_data'],
                            '{"code": 0, "msg": "操作成功!", "data": {}}')

                    ifd = InterfaceDeal(test_case_list[x]['num'],
                                        test_case_list[x]['api_purpose'],
                                        test_case_list[x]['request_url'],
                                        test_case_list[x]['request_method'],
                                        test_case_list[x]['request_data_type'],
                                        request_data_last,
                                        test_case_list[x]['check_point'],
                                        test_case_list[x]['test_describe'],
                                        test_case_list[x]['relevance_case'])
                    result_temp, response = ifd.interface_test()
            # 该用例已执行过,不需要再次执行
            else:
                LogPrint().info("----------------第" +
                                str(test_case_list[x]['num']) +
                                "个测试用例已执行----------------")
                continue
            check_list.append(int(test_case_list[x]['num']))

            # LogPrint().info(('-------第' + str(test_case_list[x]['num']) + '个用例的结果是-------:' + result_temp))
            LogPrint().info(
                "----------------根据用例执行情况,开始更新测试结果表的相关数据----------------")
            if result_temp == 'success':
                CommonMethod.sql_deal_two(md, conn, cur, 'success_num',
                                          result_id)
            elif result_temp == 'fail':
                CommonMethod.sql_deal_two(md, conn, cur, 'fail_num', result_id)
            elif result_temp == 'error':
                CommonMethod.sql_deal_two(md, conn, cur, 'error_num',
                                          result_id)
            else:
                LogPrint().info(
                    "----------------被关联的测试用例结果已更新,无需再次更新----------------")