コード例 #1
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)
コード例 #2
0
ファイル: views.py プロジェクト: Verckolf/myInterfaceTest
def admin_test(request):
    try:
        base_url = tools.get(request,'env_name')
        name = tools.get(request,'name')
    except Exception:
        return JsonResponse({"status":2000,"message":"parameter 'base_url' or 'name' is Missing"})
    else:
        id = TestCaseInfo.objects.get(name=name).id
        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())
        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)
        report_name = kwargs.get('report_name', None)
        reports_url = add_test_reports(runner, report_name=report_name)

        timeStamp = tools.getRe(reports_url,r"\\(\d+?)\.")
        name = tools.getTime(int(timeStamp))
        id = TestReports.objects.get(report_name=name).id
        reports_url = "http://192.168.80.86:8000/admin/view_report/%d/" %(id)

        status = runner.summary.get('success')
        successes = runner.summary.get('stat').get('successes')
        testsRun = runner.summary.get('stat').get('testsRun')

        response_data = {'status':status,'success':successes,'testsRun':testsRun,'reports_url':reports_url}
        return JsonResponse(response_data)
コード例 #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_id = kwargs.get('env_name')
        type = kwargs.pop('type')
        # print('id1:', request.POST.get('id'))
        env_values = EnvInfo.objects.filter(id=base_id).values()

        base_url = env_values[0].get('base_url')
        env_token = env_values[0].get('env_token')
        env_merchantId = env_values[0].get('env_merchantId')

        run_test_by_type(id, base_url, env_token, env_merchantId,
                         testcase_dir_path, type)

        report_name = kwargs.get('report_name', None)
        main_hrun(testcase_dir_path, report_name, base_id)
        # main_hrun.delay(testcase_dir_path, report_name)
        return HttpResponse('用例执行中,请稍后查看报告即可,默认时间戳命名报告')
    else:
        id = request.POST.get('id')
        type = request.POST.get('type', 'test')

        base_id = request.POST.get('env_name')
        # 修改了前端的value值,通过查询数据库获取 baseu_url

        print('base_id: ', base_id)
        env_values = EnvInfo.objects.filter(id=base_id).values()

        base_url = env_values[0].get('base_url')
        env_token = env_values[0].get('env_token')
        env_merchantId = env_values[0].get('env_merchantId')
        # print('运行的这里id: ', request.POST)
        run_test_by_type(id, base_url, env_token, env_merchantId,
                         testcase_dir_path, type)

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

        return render_to_response('report_template.html', runner.summary)
コード例 #4
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)
コード例 #5
0
ファイル: views.py プロジェクト: Verckolf/myInterfaceTest
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)
コード例 #6
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')

            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)
            return render_to_response('report_template.html', runner.summary)
    else:
        return HttpResponseRedirect("/api/login/")
コード例 #7
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)
コード例 #8
0
def main_hrun(testset_path, executor=None, request_data=None):
    """
    用例运行
    :param testset_path: dict or list
    :param report_name: str
    :return:
    """
    logger.setup_logger('INFO')
    kwargs = {
        "failfast": False,
    }
    runner = HttpRunner(**kwargs)
    error_info = {
        'start_time': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    }
    report_type = 'test'
    report_name = '执行异常'

    try:
        id = request_data.pop('id')
        base_url = request_data.pop('env_name')
        type = request_data.pop('type')
        report_name = request_data.get('report_name', None)
        if type:
            report_type = type

        report_name2 = run_test_by_type(id, base_url, testset_path, type)

        if not report_name:
            report_name = report_name2

        runner.run2(testset_path)
        shutil.rmtree(testset_path)
        runner.summary = timestamp_to_datetime(runner.summary)
        report_path = add_test_reports(runner,
                                       report_name=report_name,
                                       report_type=report_type,
                                       executor=executor)
    except Exception as e:
        logger.log_info("出现异常: {0}".format(e))
        error_info['error_msg'] = "出现异常: {0}".format(e)
        add_error_reports(error_info,
                          report_name=report_name,
                          report_type=report_type,
                          executor=executor)
    except BaseException as e:
        logger.log_info("出现异常: {0}".format(e))
        error_info['error_msg'] = "出现异常: {0}".format(e)
        add_error_reports(error_info,
                          report_name=report_name,
                          report_type=report_type,
                          executor=executor)
コード例 #9
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)