Example #1
0
def team_edit(request, tid):
    if request.method == 'POST':
        t = get_model(Team, id=tid)
        t.name = request.POST.get('name', '')
        t.remark = request.POST.get('remarks', '')
        user_id = request.session['user_id']
        t.creator = get_model(User, id=user_id)
        try:
            t.clean()
        except ValidationError as error:
            return render(request, 'team/edit.html', error.message_dict)
        try:
            t.save()
        except Exception as e:
            return render(request, 'team/edit.html', {'error': e.args})
    te = get_model(Team, id=tid)
    user_id = request.session['user_id']
    mt = get_model(ModularTable, get=False, team_id=tid)
    if not mt:
        mt = create_model(tid)
    info = {
        'te': te,
        'status': False,
        'tid': tid,
        'mt': mt.order_by('order_id')
    }
    if te.creator.id == user_id:
        info['status'] = True
        return render(request, 'team/edit.html', info)
    else:
        return render(request, 'team/edit.html', info)
Example #2
0
def team_join(request):
    if request.method == 'GET':
        return render(request, 'team/apply.html')
    else:
        tid = request.POST.get('tid', '')
        super_id = get_model(Team, id=tid).creator_id
        user_id = request.session.get('user_id', 0)
        if user_id == 0:
            return JsonResponse.AbnormalCheck('登录过期了呢,请重新登录~~~')
        if super_id != user_id:
            status = 0
            tus = TeamUsers.objects.filter(team_id=tid).filter(user_id=user_id)
            if tus:
                for t in tus:
                    status = t.status
                if status == 0:
                    return JsonResponse.AbnormalCheck('申请已提交,等待管理员审核中~~~')
                else:
                    return JsonResponse.OK('申请已通过,赶快进入体验吧~~~')
            else:
                tu = TeamUsers()
                tu.team = get_model(Team, id=tid)
                tu.user = get_model(User, id=user_id)
                try:
                    tu.save()
                except Exception as e:
                    return JsonResponse.AbnormalCheck('申请失败!{}'.format(e))
                return JsonResponse.OK('申请成功,等待管理员审核中~~~')
        else:
            return JsonResponse.SkipLink()
Example #3
0
def index(request, tid):
    t = get_model(Team, id=tid)
    if not t:
        return redirect('/team/')
    request.session['tid'] = tid
    model_list = get_model(ModularTable, get=False,
                           team_id=tid).order_by('order_id')
    return render(request, 'page/首页.html', {
        'tid': tid,
        'model_list': model_list
    })
Example #4
0
def keyword_edit(request, keyword_id):
    from Product.models import Keyword, Project
    from Autotest_platform.helper.util import get_model
    kw = get_model(Keyword, id=keyword_id)
    projectId = kw.projectId if kw else 0
    p = get_model(Project, id=projectId)
    projectName = p.name if projectId > 0 and p else "通用"
    keywordName = kw.name if kw else ""
    return render(
        request, "page/5-2编辑关键字.html", {
            "id": projectId,
            "projectName": projectName,
            "keywordId": keyword_id,
            "keywordName": keywordName
        })
Example #5
0
def model_nav(request):
    from .models import ModularTable
    from Autotest_platform.helper.util import get_model

    tid = request.session.get('tid', None)
    model_list = get_model(ModularTable, get=False, team_id=tid)
    return tid, model_list
Example #6
0
def register(request):
    if request.method == 'GET':
        return render(request, 'page/register.html')
    else:
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')
        pswd_again = request.POST.get('pswd-again', '')
        email = request.POST.get('email', '')
        msg = register_info_logic(username, password, pswd_again, email)
        if msg != 'ok':
            log.error('register error:{}'.format(msg))
            return render(request, 'page/register.html', {'error': msg})
        else:
            User.objects.create_user(username=username,
                                     password=password,
                                     email=email)
            user = auth.authenticate(username=username, password=password)
            if user is not None:
                auth.login(request, user)
                request.session['user'] = username  # 将session信息记录到浏览器
                user_id = get_model(User, username=username).id
                request.session['user_id'] = user_id  # 将session信息记录到浏览器
                response = HttpResponseRedirect('/')
                log.info('用户: {} 注册并登录成功!'.format(username))
                request.session.set_expiry(None)  # 关闭浏览器后,session失效
                return response
Example #7
0
def keyword_edit(request, keyword_id):
    kw = get_model(Keyword, id=keyword_id)
    project_id = kw.project_id if kw else 0
    p = get_model(Project, id=project_id)
    project_name = p.name if project_id is not None and p else '通用关键字封装'
    keyword_name = kw.name if kw else ''
    tid, model_list = model_nav(request)
    info = {
        'id': project_id,
        'projectName': project_name,
        'keywordId': keyword_id,
        'keywordName': keyword_name,
        'tid': tid,
        'model_list': model_list
    }
    return render(request, 'page/5-2编辑关键字.html', info)
Example #8
0
def timingRunning():
    from Product.models import Task, TestCase, Result
    from Autotest_platform.helper.util import get_model
    tasks = Task.objects.filter(timing=1)
    for t in tasks:
        browsers = json.loads(t.browsers) if t.browsers else []
        testcases = json.loads(t.testcases) if t.testcases else []
        for tc in testcases:
            environments = tc.get("environments", [])
            tc = get_model(TestCase, id=tc.get("id", 0))
            r = Result.objects.create(projectId=tc.projectId,
                                      testcaseId=tc.id,
                                      checkValue=tc.checkValue,
                                      checkType=tc.checkType,
                                      checkText=tc.checkText,
                                      selectText=tc.selectText,
                                      title=tc.title,
                                      beforeLogin=tc.beforeLogin,
                                      steps=tc.steps,
                                      parameter=tc.parameter,
                                      browsers=json.dumps(browsers,
                                                          ensure_ascii=False),
                                      environments=json.dumps(
                                          environments, ensure_ascii=False),
                                      taskId=t.id)
            SplitTask.delay(r.id)
Example #9
0
def create_team(request):
    if request.method == 'POST':
        t = Team()
        t.name = request.POST.get('name', '')
        t.remark = request.POST.get('remarks', '')
        user_id = request.session['user_id']
        t.creator = get_model(User, id=user_id)
        try:
            t.clean()
        except ValidationError as error:
            return render(request, 'team/create.html', error.message_dict)
        try:
            t.save()
        except Exception as e:
            return render(request, 'team/create.html', {'error': e.args})
        tu = TeamUsers()
        tu.team_id = t.id
        tu.user_id = t.creator_id
        tu.status = 1
        try:
            tu.save()
        except Exception as e:
            return render(request, 'team/create.html', {'error': e.args})
        return HttpResponseRedirect('/team/')
    return render(request, 'team/create.html')
Example #10
0
def team_apply(request, tid):
    if request.method == 'POST':
        apply_id = request.POST.get('apply_id')
        tu = get_model(TeamUsers, get=False, id=apply_id)
        tu.update(status=1)
        return JsonResponse.OK()
    tu = TeamUsers.objects.filter(team_id=tid).filter(status=0)
    return render(request, 'team/apply.html', {'join': tu, 'tid': tid})
Example #11
0
def project_config(request, project_id):
    from Product.models import Project
    from Autotest_platform.helper.util import get_model
    p = get_model(Project, id=project_id)
    name = p.name if p else ""
    return render(request, "page/2项目管理--环境配置.html", {
        "projectId": project_id,
        "projectName": name
    })
Example #12
0
def project_config(request, project_id):
    p = get_model(Project, id=project_id)
    name = p.name if p else ''
    tid, model_list = model_nav(request)
    info = {
        'projectId': project_id,
        'projectName': name,
        'tid': tid,
        'model_list': model_list
    }
    return render(request, 'page/2项目管理--环境配置.html', info)
Example #13
0
def login_view(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = auth.authenticate(username=username,
                                 password=password)  # 认证给出的用户名和密码
        if user is not None and user.is_active:  # 判断用户名和密码是否有效
            auth.login(request, user)
            request.session['user'] = username  # 跨请求的保持user参数
            user_id = get_model(User, username=username).id
            request.session['user_id'] = user_id
            request.session.set_expiry(None)  # 关闭浏览器后,session失效
            response = HttpResponseRedirect('/team/')
            delete_testcase(settings.MEDIA_ROOT)
            delete_testcase(settings.LOG_PATH)
            return response
        else:
            messages.add_message(request, messages.WARNING, '账户或者密码错误,请检查')
            return render(request, 'page/1登录.html')
    elif request.method == 'GET':
        return render(request, 'page/1登录.html')
Example #14
0
def create_model(tid):
    from .models import ModularTable
    from Autotest_platform.helper.util import get_model
    mt_list = []
    sign_dict = [
        {"id": 1, "model_name": "项目管理", "url": "/admin/project", 'Icon': 'fa fa-desktop', 'team_id': tid},
        {"id": 2, "model_name": "页面管理", "url": "/admin/page", 'Icon': 'fa fa-bar-chart', 'team_id': tid},
        {"id": 3, "model_name": "页面元素", "url": "/admin/element", 'Icon': 'fa fa-fw fa-qrcode', 'team_id': tid},
        {"id": 4, "model_name": "关键字库", "url": "/admin/keyword", 'Icon': 'fa fa-fw fa-table', 'team_id': tid},
        {"id": 5, "model_name": "测试用例", "url": "/admin/testcase", 'Icon': 'fa fa-w fa-edit', 'team_id': tid},
        {"id": 6, "model_name": "测试结果", "url": "/admin/result", 'Icon': 'fa fa-fw fa-file', 'team_id': tid},
        {"id": 7, "model_name": "登录配置", "url": "/admin/loginConfig", 'Icon': 'fa fa-fw fa-building',
         'team_id': tid},
        {"id": 8, "model_name": "任务管理", "url": "/admin/task", 'Icon': 'fa fa-fw fa-sitemap', 'team_id': tid},
    ]
    for signer in sign_dict:
        mt_list.append(
            ModularTable(order_id=signer["id"], model_name=signer["model_name"], url=signer["url"], Icon=signer["Icon"],
                         team_id=signer["team_id"]))
    ModularTable.objects.bulk_create(mt_list)
    mt = get_model(ModularTable, get=False, team_id=tid)
    return mt
Example #15
0
def timingRunning(*args, **kwargs):
    from Product.models import TestCase, Result, TaskRelation
    from Autotest_platform.helper.util import get_model
    from djcelery.models import PeriodicTask
    if kwargs:
        name = kwargs['name'] if kwargs['name'] else None
        periodic = PeriodicTask.objects.get(name__exact=name)
        browsers = kwargs['browsers'] if kwargs['browsers'] else []
        testcases = kwargs['testcases'] if kwargs['testcases'] else []
        result_id_list = []
        for tc in testcases:
            environments = tc.get('environments', [])
            tc = get_model(TestCase, id=tc.get('id', 0))
            r = Result.objects.create(project_id=tc.project_id, testcase_id=tc.id, checkValue=tc.checkValue,
                                      checkType=tc.checkType, checkText=tc.checkText, selectText=tc.selectText,
                                      title=name, beforeLogin=tc.beforeLogin, team_id=tc.team_id,
                                      steps=tc.steps, parameter=tc.parameter,
                                      browsers=json.dumps(browsers, ensure_ascii=False),
                                      environments=json.dumps(environments, ensure_ascii=False), task_id=periodic.id)
            result_id_list.append(str(r.id))
            SplitTask.delay(r.id)
        tr = TaskRelation.objects.create(result_id_list=json.dumps(result_id_list),
                                         result_id=result_id_list[0])
        tr.save()
Example #16
0
def SplitTaskRunning(splitResult_id):
    from Product.models import SplitResult, Browser, Environment, Element, Check, Result, EnvironmentLogin, LoginConfig
    from django.utils import timezone
    from django.conf import settings
    import os
    from Autotest_platform.PageObject.base_page import PageObject
    from Autotest_platform.helper.util import get_model
    split = SplitResult.objects.get(id=splitResult_id)
    result_ = Result.objects.get(id=split.result_id)
    steps = json.loads(result_.steps) if result_.steps else []
    parameter = json.loads(split.parameter) if split.parameter else {}
    checkType = result_.checkType
    checkValue = result_.checkValue
    checkText = result_.checkText
    selectText = result_.selectText
    beforeLogin = json.loads(result_.beforeLogin) if result_.beforeLogin else []
    split.status = 20
    split.save()
    split.startTime = timezone.now()
    environment = get_model(Environment, id=split.environment_id)
    host = environment.host if environment and environment.host else ''
    driver = None
    make_params = {}
    step_num = 0
    error_name = ''
    now = datetime.utcnow().strftime('%Y-%m-%d %H-%M-%S-%f')[:-1]
    img_path = os.path.join(settings.MEDIA_ROOT, now + '.png')
    try:
        driver = Browser.objects.get(id=split.browser_id).buid(host)
    except Exception as e:
        split.status = 40
        split.remark = '浏览器初始化失败!{}'.format(e)
        split.finishTime = timezone.now()
        split.save()
        if driver:
            driver.quit()
        return
    if beforeLogin and len(beforeLogin) > 0:
        for bl in beforeLogin:
            login = get_model(LoginConfig, id=bl)
            loginCheckType = login.checkType
            loginCheckValue = login.checkValue
            loginCheckText = login.checkText
            loginSelectText = login.selectText
            if not login:
                split.loginStatus = 3
                split.status = 50
                split.remark = '找不到登陆配置,id=' + str(bl)
                split.finishTime = timezone.now()
                split.save()
                if driver:
                    driver.quit()
                log.error(split.remark)
                return
            loginSteps = json.loads(login.steps) if login.steps else []
            loginParameter = {}
            if environment:
                environmentLogin = get_model(EnvironmentLogin, loginId=bl, environment_id=environment.id)
                if environmentLogin:
                    loginParameter = json.loads(environmentLogin.parameter) if environmentLogin.parameter else {}
            for loginStep in loginSteps:
                try:
                    Step(loginStep.get('keywordId'), loginStep.get('values')).perform(driver, loginParameter, host)
                except Exception as e:
                    split.loginStatus = 2
                    split.status = 40
                    try:
                        driver.save_screenshot(img_path)
                        split.error_name = now + '.png'
                    except Exception as msg:
                        log.warning('页面加载超时:{}'.format(msg))
                    split.step_num = 777  # 页面加载超时异常,无法截图
                    split.remark = '初始化登陆失败</br>登陆名称={}, </br>错误信息={}'.format(login.name, e)
                    split.finishTime = timezone.now()
                    split.save()
                    if driver:
                        driver.quit()
                    log.error(split.remark)
                    return
            if loginCheckType:
                time.sleep(2)
                if loginCheckType == Check.TYPE_URL:
                    if not driver.current_url.endswith(str(loginCheckValue)):
                        split.loginStatus = 2
                        split.status = 40
                        driver.save_screenshot(img_path)
                        split.step_num = 888
                        split.error_name = now + '.png'
                        split.remark = '初始化登陆失败</br>登陆名称=' + login.name + ' , </br>错误信息=登录断言不通过'
                        split.finishTime = timezone.now()
                        split.save()
                        if driver:
                            driver.quit()
                        log.error(split.remark)
                        return
                elif loginCheckType == Check.TYPE_ELEMENT:
                    element = loginCheckValue
                    if str(loginCheckValue).isdigit():
                        element = get_model(Element, id=loginCheckValue)
                    try:
                        PageObject().find_element(driver, element)
                    except:
                        split.loginStatus = 2
                        split.status = 40
                        driver.save_screenshot(img_path)
                        split.step_num = 888
                        split.error_name = now + '.png'
                        split.remark = '初始化登陆失败[ 登陆名称:' + login.name + ' , 错误信息:断言不通过'
                        split.finishTime = timezone.now()
                        split.save()
                        if driver:
                            driver.quit()
                        log.error(split.remark)
                        return
        else:
            split.loginStatus = 1
    index = 1
    for step in steps:
        values = step.get('values', [])
        keyword_id = step.get('keywordId')
        try:
            if 'make' in str(values):
                for key in values:
                    if key.get('value', '').isdigit():
                        element = key['value']
                        element = get_model(Element, id=int(element))
                    if key.get('key', '') == 'make':
                        PageObject().find_element(driver, element)
                        make_text = PageObject().get_text(element)
                        log.info('提取的文本是:{}'.format(make_text))
                        make_key = key.get('value')
                        make_params.update({make_key: make_text})
            for key in values:
                if key.get('value', '') in make_params.keys():
                    log.info('把提取的文本,赋值给需要输入的值:{}'.format(make_params[key['value']]))
                    key['value'] = make_params[key['value']]
            Step(keyword_id, values).perform(driver, parameter, host)
            index = index + 1
        except RuntimeError as re:
            split.status = 40
            driver.save_screenshot(img_path)
            split.step_num = index
            split.error_name = now + '.png'
            split.remark = '测试用例执行第' + str(index) + '步失败,错误信息:' + str(re.args)
            split.finishTime = timezone.now()
            split.save()
            if driver:
                driver.quit()
            log.error(split.remark)
            return
        except Exception as info:
            split.status = 40
            driver.save_screenshot(img_path)
            split.step_num = index
            split.error_name = now + '.png'
            split.remark = '执行测试用例第' + str(index) + '步发生错误,请检查测试用例:' + str(info.args)
            split.finishTime = timezone.now()
            split.save()
            if driver:
                driver.quit()
            log.error(split.remark)
            return
    remark = '测试用例未设置断言,建议设置'
    time.sleep(2)
    if checkType:
        if checkType == Check.TYPE_URL:
            TestResult = driver.current_url.endswith(checkValue)
            if not TestResult:
                if not split.expect:
                    remark = '测试通过'
                else:
                    driver.save_screenshot(img_path)
                    step_num = 999
                    error_name = now + '.png'
                    remark = '测试不通过,预期结果为[' + checkValue + '], 但实际结果为[' + driver.current_url + ']'
            else:
                if split.expect:
                    remark = '测试通过'
                else:
                    driver.save_screenshot(img_path)
                    step_num = 999
                    error_name = now + '.png'
                    remark = '测试不通过,预期结果为[' + checkValue + '], 但实际结果为[' + driver.current_url + ']'
        elif checkType == Check.TYPE_ELEMENT:
            element = checkValue
            expect_text = checkText
            select_text = selectText
            if str(checkValue).isdigit():
                element = get_model(Element, id=int(element))
            try:
                PageObject().find_element(driver, element)
                actual_text = PageObject().find_element(driver, element).text
                if select_text == 'all':
                    if expect_text == actual_text:
                        TestResult = True
                    else:
                        TestResult = False
                    if TestResult:
                        if split.expect:
                            remark = '测试通过,预期断言值完全匹配实际断言值。'
                        else:
                            driver.save_screenshot(img_path)
                            step_num = 999
                            error_name = now + '.png'
                            remark = '测试不通过,预期结果失败,但实际结果是成功。'
                    else:
                        driver.save_screenshot(img_path)
                        step_num = 999
                        error_name = now + '.png'
                        if not split.expect:
                            remark = '测试通过,预期结果失败,实际结果也是失败。'
                        else:
                            remark = '测试不通过,预期结果为[' + expect_text + '],但实际结果为[' + actual_text + ']'
                else:
                    if expect_text in actual_text:
                        TestResult = True
                    else:
                        TestResult = False
                    if TestResult:
                        if split.expect:
                            remark = '测试通过,预期断言值包含匹配实际断言值。'
                        else:
                            driver.save_screenshot(img_path)
                            step_num = 999
                            error_name = now + '.png'
                            remark = '测试不通过,预期结果失败,但实际结果是成功。'
                    else:
                        driver.save_screenshot(img_path)
                        step_num = 999
                        error_name = now + '.png'
                        if not split.expect:
                            remark = '测试通过,预期结果失败,实际结果也是失败。'
                        else:
                            remark = '测试不通过,预期结果为[' + expect_text + '],但实际结果为[' + actual_text + ']'
            except:
                TestResult = False
                driver.save_screenshot(img_path)
                step_num = 999
                error_name = now + '.png'
                remark = '当前元素定位已改变,请及时更新定位!'

    if driver:
        driver.quit()
    split.status = 30 if TestResult else 40
    split.remark = remark
    split.finishTime = timezone.now()
    split.step_num = step_num
    split.error_name = error_name
    split.save()
    log.error(remark)
    return
Example #17
0
 def get_queryset(self):
     team_list = get_model(Team, get=False)
     return team_list
Example #18
0
 def __init__(self, keyword_id, values):
     from .models import Keyword, Params
     from Autotest_platform.helper.util import get_model
     self.keyword = get_model(Keyword, id=keyword_id)
     self.params = [Params(value) for value in values]
Example #19
0
def SplitTaskRunning(splitResult_id):
    from Product.models import SplitResult, Browser, Environment, Element, Check, Result, EnvironmentLogin, LoginConfig
    import django.utils.timezone as timezone
    from Autotest_platform.PageObject.Base import PageObject
    from Autotest_platform.helper.util import get_model
    split = SplitResult.objects.get(id=splitResult_id)
    result_ = Result.objects.get(id=split.resultId)
    steps = json.loads(result_.steps) if result_.steps else []
    parameter = json.loads(split.parameter) if split.parameter else {}
    checkType = result_.checkType
    checkValue = result_.checkValue
    checkText = result_.checkText
    selectText = result_.selectText
    beforeLogin = json.loads(
        result_.beforeLogin) if result_.beforeLogin else []
    split.status = 20
    split.save()
    split.startTime = timezone.now()
    environment = get_model(Environment, id=split.environmentId)
    host = environment.host if environment and environment.host else ''
    driver = None
    try:
        driver = Browser.objects.get(id=split.browserId).buid()

    except:
        split.status = 40
        split.remark = '浏览器初始化失败'
        split.finishTime = timezone.now()
        split.save()
        if driver:
            driver.quit()
        return
    if beforeLogin and len(beforeLogin) > 0:
        for bl in beforeLogin:
            login = get_model(LoginConfig, id=bl)
            loginCheckType = login.checkType
            loginCheckValue = login.checkValue
            loginCheckText = login.checkText
            loginSelectText = login.selectText
            if not login:
                split.loginStatus = 3
                split.status = 50
                split.remark = "找不到登陆配置,id=" + str(bl)
                split.finishTime = timezone.now()
                split.save()
                if driver:
                    driver.quit()
                return
            loginSteps = json.loads(login.steps) if login.steps else []
            loginParameter = {}
            if environment:
                environmentLogin = get_model(EnvironmentLogin,
                                             loginId=bl,
                                             environmentId=environment.id)
                if environmentLogin:
                    loginParameter = json.loads(
                        environmentLogin.parameter
                    ) if environmentLogin.parameter else {}
            for loginStep in loginSteps:
                try:
                    Step(loginStep.get("keywordId"),
                         loginStep.get("values")).perform(
                             driver, loginParameter, host)
                except Exception as e:
                    split.loginStatus = 2
                    split.status = 50
                    split.remark = "初始化登陆失败</br>登陆名称=" + login.name + " , </br>错误信息=" + (
                        "".join(e.args))
                    split.finishTime = timezone.now()
                    split.save()
                    if driver:
                        driver.quit()
                    return
            if loginCheckType:
                time.sleep(2)
                if loginCheckType == Check.TYPE_URL:
                    if not driver.current_url.endswith(str(loginCheckValue)):
                        split.loginStatus = 2
                        split.status = 50
                        split.remark = "初始化登陆失败</br>登陆名称=" + login.name + " , </br>错误信息=登录断言不通过"
                        split.finishTime = timezone.now()
                        split.save()
                        if driver:
                            driver.quit()
                        return
                elif loginCheckType == Check.TYPE_ELEMENT:
                    element = loginCheckValue
                    if str(loginCheckValue).isdigit():
                        element = get_model(Element, id=loginCheckValue)
                    try:
                        PageObject.find_element(driver, element)
                    except:
                        split.loginStatus = 2
                        split.status = 50
                        split.remark = "初始化登陆失败[ 登陆名称:" + login.name + " , 错误信息:断言不通过"
                        split.finishTime = timezone.now()
                        split.save()
                        if driver:
                            driver.quit()
                        return
        else:
            split.loginStatus = 1
    index = 1
    for step in steps:
        try:
            Step(step.get("keywordId"),
                 step.get("values")).perform(driver, parameter, host)
            index = index + 1
        except RuntimeError as re:
            split.status = 40
            split.remark = "测试用例执行第" + str(index) + "步失败,错误信息:" + str(re.args)
            split.finishTime = timezone.now()
            split.save()
            if driver:
                driver.quit()
            return
        except Exception as info:
            split.status = 40
            split.remark = "执行测试用例第" + str(index) + "步发生错误,请检查测试用例:" + str(
                info.args)
            split.finishTime = timezone.now()
            split.save()
            if driver:
                driver.quit()
            return
    remark = '测试用例未设置断言,建议设置'
    time.sleep(2)
    if checkType:
        if checkType == Check.TYPE_URL:
            TestResult = driver.current_url.endswith(checkValue)
            if not TestResult:
                if not split.expect:
                    remark = '测试通过'
                else:
                    remark = '测试不通过,预期结果为["' + checkValue + '"], 但实际结果为["' + driver.current_url + '"]'
            else:
                if split.expect:
                    remark = '测试通过'
                else:
                    remark = '测试不通过,预期结果为["' + checkValue + '"], 但实际结果为["' + driver.current_url + '"]'
        elif checkType == Check.TYPE_ELEMENT:
            element = checkValue
            expect_text = checkText
            select_text = selectText
            if str(checkValue).isdigit():
                element = get_model(Element, id=int(element))
            try:
                PageObject.find_element(driver, element)
                actual_text = PageObject.find_element(driver, element).text
                if select_text == 'all':
                    if expect_text == actual_text:
                        TestResult = True
                    else:
                        TestResult = False
                    if TestResult:
                        if split.expect:
                            remark = '测试通过,预期断言值完全匹配实际断言值。'
                        else:
                            remark = '测试不通过,预期结果失败,但实际结果是成功。'
                    else:
                        if not split.expect:
                            remark = '测试通过,预期结果失败,实际结果也是失败。'
                        else:
                            remark = '测试不通过,预期结果为["' + expect_text + '"],但实际结果为["' + actual_text + '"]'
                else:
                    if expect_text in actual_text:
                        TestResult = True
                    else:
                        TestResult = False
                    if TestResult:
                        if split.expect:
                            remark = '测试通过,预期断言值包含匹配实际断言值。'
                        else:
                            remark = '测试不通过,预期结果失败,但实际结果是成功。'
                    else:
                        if not split.expect:
                            remark = '测试通过,预期结果失败,实际结果也是失败。'
                        else:
                            remark = '测试不通过,预期结果为["' + expect_text + '"],但实际结果为["' + actual_text + '"]'
            except:
                TestResult = False
                remark = '当前元素定位已改变,请及时更新定位!'

    if driver:
        driver.quit()
    split.status = 30 if TestResult else 40
    split.remark = remark
    split.finishTime = timezone.now()
    split.save()
    return