示例#1
0
def run_batch_test(request):
    """
    批量运行用例
    :param request:
    :return:
    """


    testcase_dir_path = os.path.join(os.path.dirname(os.path.split(os.path.realpath(__file__))[0]), "suite")
    testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp())

    if request.is_ajax():
        kwargs = json.loads(request.body.decode('utf-8'))
        logger.info("前台传入参数:{}".format(kwargs))
        test_list = kwargs.pop('id')
        base_url = kwargs.pop('env_name')
        type = kwargs.pop('type')
        logger.info("当前运行的用例类型为:{}".format(type))
        logger.info("-" * 30)
        report_name = kwargs.get('report_name', None)
        run_by_batch(test_list, base_url, testcase_dir_path, type=type)
        main_hrun.delay(testcase_dir_path, report_name)
        return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
    else:
        type = request.POST.get('type', None)
        base_url = request.POST.get('env_name')
        test_list = request.body.decode('utf-8').split('&')
        if type:
            run_by_batch(test_list, base_url, testcase_dir_path, type=type, mode=True)
        else:
            run_by_batch(test_list, base_url, testcase_dir_path)

        summary = main_run_cases(testcase_dir_path)
        return render_to_response('report_template.html', summary)
def run_batch_test(request):
    if request.session.get('login_status'):
        if request.is_ajax():
            try:
                kwargs = json.loads(request.body.decode('utf-8'))
            except ValueError:
                logging.error('待运行用例信息解析异常:{kwargs}'.format(kwargs=kwargs))
                return HttpResponse('信息解析异常,请重试')
            test_list = kwargs.pop('id')
            base_url = kwargs.pop('env_name')
            type = kwargs.pop('type')
            testcases_dict = run_by_batch(test_list, base_url, type)
            if not testcases_dict:
                return HttpResponse('没有用例哦')
            main_hrun.delay(testcases_dict)
            return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
        else:
            base_url = request.POST.get('env_name')
            test_list = request.body.decode('utf-8').split('&')
            testcases_lists = run_by_batch(test_list, base_url)
            kwargs = {
                "failfast": False,
            }
            runner = HttpRunner(**kwargs)
            runner.run(testcases_lists)
            return render_to_response('report_template.html', runner.summary)
    else:
        return HttpResponseRedirect("/api/login/")
示例#3
0
def run_test(request):
    """
    运行用例
    :param request:
    :return:
    """

    kwargs = {
        "failfast": False,
    }
    runner = HttpRunner(**kwargs)

    testcase_dir_path = os.path.join(os.getcwd(), "suite")
    testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp())

    if request.is_ajax():
        kwargs = json.loads(request.body.decode('utf-8'))
        id = kwargs.pop('id')
        base_url = kwargs.pop('env_name')
        type = kwargs.pop('type')
        run_test_by_type(id, base_url, testcase_dir_path, type)
        report_name = kwargs.get('report_name', None)
        main_hrun.delay(testcase_dir_path, report_name)
        return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
    else:
        id = request.POST.get('id')
        base_url = request.POST.get('env_name')
        type = request.POST.get('type', 'test')

        run_test_by_type(id, base_url, testcase_dir_path, type)
        runner.run(testcase_dir_path)
        shutil.rmtree(testcase_dir_path)
        runner.summary = timestamp_to_datetime(runner.summary, type=False)

        return render_to_response('report_template.html', runner.summary)
示例#4
0
def run_test(request):
    if request.session.get('login_status'):
        kwargs = {
            "failfast": False,
        }
        runner = HttpRunner(**kwargs)
        if request.is_ajax():
            try:
                kwargs = json.loads(request.body.decode('utf-8'))
            except ValueError:
                logging.error('待运行用例信息解析异常:{kwargs}'.format(kwargs=kwargs))
                return HttpResponse('信息解析异常,请重试')
            id = kwargs.pop('id')
            base_url = kwargs.pop('env_name')
            type = kwargs.pop('type')
            testcases_dict = run_by_module(id, base_url) if type == 'module' else run_by_project(id, base_url)
            report_name = kwargs.get('report_name', None)
            if not testcases_dict:
                return HttpResponse('没有用例哦')
            main_hrun.delay(testcases_dict, report_name)
            return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
        else:
            id = request.POST.get('id')
            base_url = request.POST.get('env_name')
            type = request.POST.get('type', None)
            if type:
                testcases_dict = run_by_module(id, base_url) if type == 'module' else run_by_project(id, base_url)
            else:
                testcases_dict = run_by_single(id, base_url)
            runner.run(testcases_dict)
            return render_to_response('report_template.html', runner.summary)
    else:
        return HttpResponseRedirect("/api/login/")
示例#5
0
def run_batch_test(request, Webhook=None):
    """
    批量运行用例
    :param request:
    :return:
    """
    if Webhook is None:
        if request.session.get('login_status'):
            kwargs = {
                "failfast": False,
            }
            runner = HttpRunner(**kwargs)

            testcase_dir_path = os.path.join(os.getcwd(), "suite")
            testcase_dir_path = os.path.join(testcase_dir_path,
                                             get_time_stamp())

            if request.is_ajax():
                try:
                    kwargs = json.loads(request.body.decode('utf-8'))
                except ValueError:
                    logging.error('待运行用例信息解析异常:{kwargs}'.format(kwargs=kwargs))
                    return HttpResponse('信息解析异常,请重试')
                test_list = kwargs.pop('id')
                base_url = kwargs.pop('env_name')
                type = kwargs.pop('type')
                report_name = kwargs.get('report_name', None)
                run_by_batch(test_list, base_url, testcase_dir_path, type=type)
                main_hrun.delay(testcase_dir_path, report_name)
                return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
            else:
                type = request.POST.get('type', None)
                base_url = request.POST.get('env_name')
                test_list = request.body.decode('utf-8').split('&')
                if type:
                    run_by_batch(test_list,
                                 base_url,
                                 testcase_dir_path,
                                 type=type,
                                 mode=True)
                else:
                    run_by_batch(test_list, base_url, testcase_dir_path)

                runner.run(testcase_dir_path)

                shutil.rmtree(testcase_dir_path)
                return render_to_response('report_template.html',
                                          runner.summary)
        else:
            return HttpResponseRedirect("/api/login/")
    elif Webhook == 'Webhook':
        testcase_dir_path = os.path.join(os.getcwd(), "suite")
        testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp())
        test_list = request.pop('id')
        base_url = request.pop('env_name')
        type = request.pop('type')
        report_name = request.get('report_name', None)
        run_by_batch(test_list, base_url, testcase_dir_path, type=type)
        main_hrun.delay(testcase_dir_path, report_name)
        return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
示例#6
0
def run_logic_test(request):
    account = request.session["now_account"]

    kwargs = {
        "failfast": False,
    }
    runner = HttpRunner_ext(**kwargs)

    testcase_dir_path = os.path.join(os.getcwd(), "suite")
    testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp())

    if request.is_ajax():
        request_data = json.loads(request.body.decode('utf-8'))
        # report_name = kwargs.get('report_name', None)
        main_hrun.delay(testcase_dir_path, account, request_data)
        return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
    else:
        id = request.POST.get('id')
        base_url = request.POST.get('env_name')
        type = request.POST.get('type', 'test')

        report_name = run_by_logic_test(id, base_url, testcase_dir_path)
        runner.run3(testcase_dir_path)
        shutil.rmtree(testcase_dir_path)
        runner.summary = timestamp_to_datetime(runner.summary, type=False)

        add_test_reports(runner, report_name=report_name, report_type=type, executor=account)

        return render_to_response('report_template.html', runner.summary)
示例#7
0
def run_test(request):
    """
    运行用例
    :param request:
    :return:
    """

    kwargs = {
        "failfast": False,
    }
    runner = HttpRunner(**kwargs)

    testcase_dir_path = os.path.join(settings.BASE_DIR, "suite")
    testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp())

    account = request.session["now_account"]
    if request.is_ajax():
        kwargs = json.loads(request.body.decode('utf-8'))
        id = kwargs.pop('id')
        suite_name = TestSuite.objects.get(id=id).suite_name
        cfg_id = kwargs.pop('cfg_id')
        base_url = kwargs.pop('env_name')
        type = kwargs.pop('type')
        run_test_by_type(id, base_url, testcase_dir_path, type, cfg_id)
        report_name = kwargs.get('report_name', None)
        request.session["base_url"] = base_url
        request.session["cfg_id"] = cfg_id
        main_hrun.delay(testcase_dir_path, report_name)
        return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
    else:
        id = request.POST.get('id')
        base_url = request.POST.get('env_name')
        type = request.POST.get('type', 'test')
        cfg_id = request.POST.get('cfg_id')
        request.session["base_url"] = base_url
        request.session["cfg_id"] = cfg_id
        run_test_by_type(id, base_url, testcase_dir_path, type, cfg_id)
        if type == "suite":
            suite_name = TestSuite.objects.get(id=id).suite_name
            runner.run(
                os.path.join(testcase_dir_path, "{}.yml".format(suite_name)))
        else:
            runner.run(testcase_dir_path)
        #删除yml文件,异常的时候不删除,可以用来debug
        shutil.rmtree(testcase_dir_path)
        runner._summary = timestamp_to_datetime(runner.summary, type=False)
        #data = request.body.decode('utf-8')
        # kwargs = json.loads(request.body.decode('utf-8'))
        #report_name = kwargs.get('report_name', None)
        report_name = get_test_name(id, type)
        report_id = add_test_reports(runner, account, report_name)
        if request.POST.get('account') == "Jenkins":
            result = download_report(request, report_id)
            return result
        else:
            runner.summary.setdefault("report_id", report_id)
            return render_to_response('report_template.html', runner.summary)
示例#8
0
def run_batch_test(request):
    """
    批量运行用例
    :param request:
    :return:
    """
    if request.session.get('login_status'):
        kwargs = {
            "failfast": False,
        }
        runner = HttpRunner(**kwargs)
        if request.is_ajax():
            try:
                kwargs = json.loads(request.body.decode('utf-8'))
            except ValueError:
                logging.error('待运行用例信息解析异常:{kwargs}'.format(kwargs=kwargs))
                return HttpResponse('信息解析异常,请重试')
            test_list = kwargs.pop('id')
            base_url = kwargs.pop('env_name')
            type = kwargs.pop('type')
            config = kwargs.pop('config')
            report_name = kwargs.get('report_name', None)
            testcases_dict = run_by_batch(test_list,
                                          base_url,
                                          config,
                                          type=type)
            if not testcases_dict:
                return HttpResponse('没有用例哦')
            main_hrun.delay(testcases_dict, report_name)
            return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
        else:
            type = request.POST.get('type', None)
            base_url = request.POST.get('env_name')
            config = request.POST.get('config')
            test_list = request.body.decode('utf-8').split('&')
            if type:
                testcases_lists = run_by_batch(test_list,
                                               base_url,
                                               config,
                                               type=type,
                                               mode=True)
            else:
                testcases_lists = run_by_batch(test_list, base_url, config)
            if testcases_lists:
                runner.run(testcases_lists)
                return render_to_response('report_template.html',
                                          runner.summary)
            else:  # 没有用例默认重定向到首页
                return HttpResponseRedirect('/api/index/')
    else:
        return HttpResponseRedirect("/api/login/")
示例#9
0
def run_test(request):
    """
    运行用例
    :param request:
    :return:
    """
    if request.session.get('login_status'):
        kwargs = {
            "failfast": False,
        }
        runner = HttpRunner(**kwargs)

        testcase_dir_path = os.path.join(os.getcwd(), "suite")
        testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp())

        if request.is_ajax():
            try:
                kwargs = json.loads(request.body.decode('utf-8'))
            except ValueError:
                logging.error('待运行用例信息解析异常:{kwargs}'.format(kwargs=kwargs))
                return HttpResponse('信息解析异常,请重试')
            id = kwargs.pop('id')
            base_url = kwargs.pop('env_name')
            type = kwargs.pop('type')
            config = request.POST.get(
                'config') if request.POST.get('config') != "" else None
            run_by_module(id, base_url, testcase_dir_path, config) if type == 'module' \
                else run_by_project(id, base_url, testcase_dir_path, config)
            report_name = kwargs.get('report_name', None)
            main_hrun.delay(testcase_dir_path, report_name)
            return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
        else:
            id = request.POST.get('id')
            base_url = request.POST.get('env_name')
            config = request.POST.get(
                'config') if request.POST.get('config') != "" else None
            type = request.POST.get('type', None)
            if type:
                run_by_module(id, base_url, testcase_dir_path, config) if type == 'module' \
                    else run_by_project(id, base_url, testcase_dir_path, config)
            else:
                run_by_single(id, base_url, testcase_dir_path, config)

            runner.run(testcase_dir_path)

            shutil.rmtree(testcase_dir_path)
            return render_to_response('report_template.html', runner.summary)
    else:
        return HttpResponseRedirect("/api/login/")
示例#10
0
def run_test(request):
    print("!!!用例开始运行!!!")
    print(request.body)
    print(request.path)
    print(request.encoding)
    print(request.method)
    print(request.META.get("CONTENT_TYPE"))
    print("请求来源:",request.META.get("REMOTE_ADDR"))
    """
    运行用例
    :param request:
    :return:
    """
    kwargs = {
        "failfast": False,
    }
    runner = HttpRunner(**kwargs)

    testcase_dir_path = os.path.join(os.getcwd(), "suite")
    testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp())

    if request.is_ajax():
        kwargs = json.loads(request.body.decode('utf-8'))
        id = kwargs.pop('id')
        base_url = kwargs.pop('env_name')
        type = kwargs.pop('type')
        run_test_by_type(id, base_url, testcase_dir_path, type)
        report_name = kwargs.get('report_name', None)
        main_hrun.delay(testcase_dir_path, report_name)
        return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
    else:
        id = request.POST.get('id')
        base_url = request.POST.get('env_name')
        type = request.POST.get('type', 'test')
        print(id,base_url,type)

        run_test_by_type(id, base_url, testcase_dir_path, type)
        t1 = runner.run(testcase_dir_path)
        print("用例执行结果",t1.gen_html_report())
        shutil.rmtree(testcase_dir_path)
        runner.summary = timestamp_to_datetime(runner.summary, type=False)

        #修复BUG一,测试完成后report没有落库,可能是没有调用此方法,补充如下:
        report_name = kwargs.get('report_name', None)
        add_test_reports(runner, report_name=report_name)

        return render_to_response('report_template.html', runner.summary)
示例#11
0
def run_batch_test(request):
    """
    批量运行用例
    :param request:
    :return:
    """

    kwargs = {
        "failfast": False,
    }
    runner = HttpRunner(**kwargs)

    testcase_dir_path = os.path.join(os.getcwd(), "suite")
    testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp())

    if request.is_ajax():
        kwargs = json.loads(request.body.decode('utf-8'))
        test_list = kwargs.pop('id')
        base_url = kwargs.pop('env_name')
        type = kwargs.pop('type')
        report_name = kwargs.get('report_name', None)
        run_by_batch(test_list, base_url, testcase_dir_path, type=type)
        main_hrun.delay(testcase_dir_path, report_name)
        return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
    else:
        #
        #obj = json.loads(request.GET.get('obj', None))
        obj = request.POST.dict()
        type = obj.pop('type')
        base_url = obj.pop('env_name')
        test_list = list(obj.values())
        if type:
            run_by_batch(test_list,
                         base_url,
                         testcase_dir_path,
                         type=type,
                         mode=True)
        else:
            run_by_batch(test_list, base_url, testcase_dir_path)

        runner.run(testcase_dir_path)

        shutil.rmtree(testcase_dir_path)
        runner.summary = timestamp_to_datetime(runner.summary, type=False)

        return render_to_response('report_template.html', runner.summary)
示例#12
0
def run_test(request):
    """
    运行用例
    :param request:
    :return:
    """

    kwargs = {
        "failfast": False,
    }
    runner = HttpRunner(**kwargs)

    testcase_dir_path = os.path.join(os.getcwd(), "suite")
    testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp())

    if request.is_ajax():
        kwargs = json.loads(request.body.decode('utf-8'))
        id = kwargs.pop('id')
        base_url = kwargs.pop('env_name')
        type = kwargs.pop('type')
        run_test_by_type(id, base_url, testcase_dir_path, type)
        report_name = kwargs.get('report_name', None)
        main_hrun.delay(testcase_dir_path, report_name)
        return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
    else:
        id = request.POST.get('id')
        base_url = request.POST.get('env_name')
        type = request.POST.get('type', 'test')

        testcase_dir_path1 = os.path.join(testcase_dir_path, 'guest项目')
        run_test_by_type(id, base_url, testcase_dir_path, type)
        runner.run(testcase_dir_path1)
        # shutil.rmtree(testcase_dir_path)  # 递归删除所有文件
        runner._summary = timestamp_to_datetime(runner._summary,
                                                base_url,
                                                type=False)
        with open('summary.json', 'w', encoding='utf-8') as f:
            json.dump(runner._summary,
                      f,
                      ensure_ascii=False,
                      sort_keys=True,
                      indent=4)
        return render_to_response('report_template.html', runner._summary)
示例#13
0
def run_test(request):
    """
    运行用例
    :param request:
    :return:
    """

    kwargs = {
        "failfast": False,
    }
    runner = HttpRunner()

    testcase_dir_path = os.path.join(os.path.dirname(os.path.split(os.path.realpath(__file__))[0]), "suite")
    testcase_dir_path = os.path.join(testcase_dir_path, get_time_stamp())

    if request.is_ajax():
        kwargs = json.loads(request.body.decode('utf-8'))
        id = kwargs.pop('id')
        base_url = kwargs.pop('env_name')
        type = kwargs.pop('type')
        logger.info("当前运行的用例类型为:{}".format(type))
        logger.info("当前运行试用的类为:run_test")
        logger.info(">>" * 30)
        run_test_by_type(id, base_url, testcase_dir_path, type)
        report_name = kwargs.get('report_name', None)
        main_hrun.delay(testcase_dir_path, report_name)
        return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
    else:
        id = request.POST.get('id')
        base_url = request.POST.get('env_name')
        type = request.POST.get('type', 'test')

        run_test_by_type(id, base_url, testcase_dir_path, type)
        #获取文件夹下所有的yml测试文件
        summary = main_run_cases(testcase_dir_path)
        return render_to_response('report_template.html', summary)