zoukankan      html  css  js  c++  java
  • 自动化测试平台

    API

    Product

    from django.db import models
    
    
    class Product(models.Model):
        product_name = models.CharField('产品名称', max_length=64)
        product_desc = models.CharField('产品描述', max_length=200)
        producer = models.CharField('产品负责人', max_length=200, null=True)
        create_time = models.DateTimeField('创建时间', auto_now=True)
    
        class Meta:
            verbose_name = '产品管理'
            verbose_name_plural = '产品管理'
    
        def __str__(self):
            return self.product_name

    api

    from django.db import models
    from product.models import Product

    __all__ = ['ApiTest', 'ApiMulti', 'ApiOne']


    class ApiTest(models.Model):
    product = models.ForeignKey('Product', on_delete=models.CASCADE, null=True)
    api_name = models.CharField('接口名称', max_length=64)
    api_desc = models.CharField('接口描述', max_length=64, null=True, blank=True)
    api_executor = models.CharField('执行人', max_length=16)
    api_result = models.BooleanField('测试结果')
    create_time = models.DateTimeField('创建时间', auto_now=True)

    class Meta:
    verbose_name = '流程场景接口'
    db_table = verbose_name
    verbose_name_plural = verbose_name


    def __str__(self):
    return self.api_name


    class ApiMulti(models.Model):
    api_test = models.ForeignKey('ApiTest', on_delete=models.CASCADE, )
    api_step = models.CharField('测试步聚', max_length=100, null=True)
    api_name = models.CharField('接口名称', max_length=100)
    api_url = models.CharField('url地址', max_length=200)
    requests_method = (('get', 'get'), ('post', 'post'), ('put', 'put'), ('delete', 'delete'), ('patch', 'patch'))
    api_method = models.CharField(verbose_name='请求方法', choices=requests_method, default='get', max_length=200,
    null=True)
    api_header = models.CharField('请求头', max_length=400)
    api_body = models.CharField('请求体', max_length=800)
    api_result = models.CharField('预期结果', max_length=200)
    api_response = models.CharField('响应数据', max_length=5000, null=True)
    api_status = models.BooleanField('是否通过') # 测试结果
    create_time = models.DateTimeField('创建时间', auto_now=True)

    def __str__(self):
    return self.api_step


    class ApiOne(models.Model):
    Product = models.ForeignKey('Product', on_delete=models.CASCADE, null=True) # 关联产品id
    api_name = models.CharField('接口名称', max_length=100)
    api_url = models.CharField('url地址', max_length=200)
    requests_method = (('get', 'get'), ('post', 'post'), ('put', 'put'), ('delete', 'delete'), ('patch', 'patch'))
    api_method = models.CharField(verbose_name='请求方法', choices=requests_method, default='get', max_length=200,
    null=True)
    api_header = models.CharField('请求头', max_length=400)
    api_body = models.CharField('请求体', max_length=800)
    api_result = models.CharField('预期结果', max_length=200)
    api_response = models.CharField('响应数据', max_length=5000, null=True)
    api_status = models.BooleanField('是否通过') # 测试结果
    create_time = models.DateTimeField('创建时间', auto_now=True)
    api_executor = models.CharField('执行人', max_length=16)

    class Meta:
    verbose_name = '单一场景接口'
    db_table = verbose_name
    verbose_name_plural = verbose_name

    def __str__(self):
    return self.api_name

    views

    from django.shortcuts import render
    from django.http import HttpResponse,HttpResponseRedirect
    from django.contrib.auth.decorators import login_required
    from django.contrib import auth
    from django.contrib.auth import authenticate, login
    from apitest.models import Apitest,Apistep,Apis
    
    from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 
    
    import pymysql
    
    from .tasks import hello_world
    from .tasks import apisauto_testcase
    from .tasks import apitest_testcase
    from .webtasks import webauto_testcase
    from .webtasks import webauto_testcase2
    from .apptasks import appauto_testcase
    from .apptasks import appauto_testcase2
    from djcelery.models import PeriodicTask,CrontabSchedule,IntervalSchedule
    # Create your views here.
    
    def task_apis(request):
        hello_world.delay()
        apisauto_testcase.delay()
        return HttpResponse("已运行")
    
    def task_apitest(request):
        hello_world.delay()
        apitest_testcase(request)
        return HttpResponse("已运行")
    
    def task_webtest(request):
        webauto_testcase(request)
        return HttpResponse("已运行")
    
    def task_webtest2(request):
        webauto_testcase2(request)
        return HttpResponse("已运行")
    
    def task_apptest(request):
        appauto_testcase(request)
        return HttpResponse("已运行")
    
    def task_apptest2(request):
        appauto_testcase2(request)
        return HttpResponse("已运行")
    
    
    def welcome(request):
        return render(request,"welcome.html")
    
    def home(request):
        return render(request,"home.html")
    
    def left(request):
        return render(request,"left.html")
    
    def login(request):
        if request.POST:
            username = password = ''
            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 
                response = HttpResponseRedirect('/home/')
                return response
              #  return redirect('/')
            else:
                return render(request,'login.html', {'error': 'username or password error'}) 
        
        return render(request,'login.html')
    
    
    def logout(request):
        auth.logout(request)
        return render(request,'login.html')
    
    
    
    # 流程接口管理
    @login_required
    def apitest_manage(request):
        apitest_list = Apitest.objects.all()      #获取所有接口测试用例
        apitest_count = Apitest.objects.all().count()  #统计产品数    
        username = request.session.get('user', '') # 读取浏览器登录session
        paginator = Paginator(apitest_list, 8)  #生成paginator对象,设置每页显示8条记录
        page = request.GET.get('page',1)  #获取当前的页码数,默认为第1页
        currentPage=int(page)  #把获取的当前页码数转换成整数类型
        try:
            apitest_list = paginator.page(page)#获取当前页码数的记录列表
        except PageNotAnInteger:
            apitest_list = paginator.page(1)#如果输入的页数不是整数则显示第1页的内容
        except EmptyPage:
            apitest_list = paginator.page(paginator.num_pages)#如果输入的页数不在系统的页数中则显示最后一页的内容
        return render(request, "apitest_manage.html", {"user": username,"apitests": apitest_list,"apitestcounts": apitest_count}) #把值赋给apitestcounts这个变量
    
            
    # 接口步聚管理
    @login_required
    def apistep_manage(request):
        username = request.session.get('user', '')
        apitestid = request.GET.get('apitest.id',None)    
        apitest = Apitest.objects.get(id=apitestid)      #获取所有接口测试用例   
        apistep_list = Apistep.objects.all()
        return render(request, "apistep_manage.html",  {"user": username,"apitest": apitest,"apisteps": apistep_list})
    
    
    # 单一接口管理
    @login_required
    def apis_manage(request):
        username = request.session.get('user', '')
        apis_list = Apis.objects.all()
        apis_count = Apis.objects.all().count()  #统计产品数
        paginator = Paginator(apis_list, 8)  #生成paginator对象,设置每页显示8条记录
        page = request.GET.get('page',1)  #获取当前的页码数,默认为第1页
        currentPage=int(page)  #把获取的当前页码数转换成整数类型
        try:
            apis_list = paginator.page(page)#获取当前页码数的记录列表
        except PageNotAnInteger:
            apis_list = paginator.page(1)#如果输入的页数不是整数则显示第1页的内容
        except EmptyPage:
            apis_list = paginator.page(paginator.num_pages)#如果输入的页数不在系统的页数中则显示最后一页的内容
        return render(request, "apis_manage.html", {"user": username,"apiss": apis_list,"apiscounts": apis_count}) #把值赋给apiscounts这个变量
    
    # 搜索功能
    @login_required
    def apisearch(request):
        username = request.session.get('user', '') # 读取浏览器登录session
        search_apitestname = request.GET.get("apitestname", "")
        apitest_list = Apitest.objects.filter(apitestname__icontains=search_apitestname) 
        return render(request,'apitest_manage.html', {"user": username,"apitests":apitest_list})
    
    # 搜索功能
    @login_required
    def apistepsearch(request):
        username = request.session.get('user', '') # 读取浏览器登录session
        search_apiname = request.GET.get("apiname", "")
        apistep_list = Apistep.objects.filter(apiname__icontains=search_apiname) 
        return render(request,'apistep_manage.html', {"user": username,"apisteps":apistep_list})
    
    # 搜索功能
    @login_required
    def apissearch(request):
        username = request.session.get('user', '') # 读取浏览器登录session
        search_apiname = request.GET.get("apiname", "")
        apis_list = Apis.objects.filter(apiname__icontains=search_apiname) 
        return render(request,'apis_manage.html', {"user": username,"apiss":apis_list})
    
    # 测试报告
    @login_required
    def test_report(request):
        username = request.session.get('user', '')
        apis_list = Apis.objects.all()
        apis_count = Apis.objects.all().count()  #统计接口数
        db = pymysql.connect(user='root', db='autotest', passwd='test123456', host='127.0.0.1')
        cursor = db.cursor()
        sql1 = 'SELECT count(id) FROM apitest_apis WHERE apitest_apis.apistatus=1'
        aa=cursor.execute(sql1)
        apis_pass_count = [row[0] for row in cursor.fetchmany(aa)][0]
        sql2 = 'SELECT count(id) FROM apitest_apis WHERE apitest_apis.apistatus=0'
        bb=cursor.execute(sql2)
        apis_fail_count = [row[0] for row in cursor.fetchmany(bb)][0]
        db.close()
        return render(request, "report.html", {"user": username,"apiss": apis_list,"apiscounts": apis_count,"apis_pass_counts": apis_pass_count,"apis_fail_counts": apis_fail_count}) #把值赋给apiscounts这个变量
       
    # 测试报告
    @login_required
    def apitest_report(request):
        username = request.session.get('user', '')
        return render(request, "apitest_report.html")
    
    
    # 任务计划
    @login_required
    def periodic_task(request):
        username = request.session.get('user', '')
        task_list = PeriodicTask.objects.all()
        task_count = PeriodicTask.objects.all().count()  #统计数
        periodic_list = IntervalSchedule.objects.all()  # 周期任务 (如:每隔1小时执行1次)
        crontab_list = CrontabSchedule.objects.all()    # 定时任务 (如:某年月日的某时,每天的某时)
        paginator = Paginator(task_list, 8)  #生成paginator对象,设置每页显示8条记录
        page = request.GET.get('page',1)  #获取当前的页码数,默认为第1页
        currentPage=int(page)  #把获取的当前页码数转换成整数类型
        try:
            task_list = paginator.page(page)#获取当前页码数的记录列表
        except PageNotAnInteger:
            task_list = paginator.page(1)#如果输入的页数不是整数则显示第1页的内容
        except EmptyPage:
            task_list = paginator.page(paginator.num_pages)#如果输入的页数不在系统的页数中则显示最后一页的内容
        return render(request, "periodic_task.html", {"user": username,"tasks": task_list,"taskcounts": task_count, "periodics": periodic_list,"crontabs": crontab_list })
    
    # 搜索功能
    @login_required
    def tasksearch(request):
        username = request.session.get('user', '') # 读取浏览器登录session
        search_name = request.GET.get("task", "")
        task_list = PeriodicTask.objects.filter(task__icontains=search_name) 
        periodic_list = IntervalSchedule.objects.all()  # 周期任务 (如:每隔1小时执行1次)
        crontab_list = CrontabSchedule.objects.all()    # 定时任务 (如:某年月日的某时,每天的某时)
        return render(request,'periodic_task.html', {"user": username,"tasks":task_list,"periodics": periodic_list,"crontabs": crontab_list })

    web

    from django.db import models
    from product.models import Product
    # Create your models here.
    
    class Webcase(models.Model):
    
        Product = models.ForeignKey('product.Product',on_delete=models.CASCADE,null=True)        # 关联产品id
        webcasename = models.CharField('用例名称',max_length=200)        # 测试用例名称
    
        webtestresult = models.BooleanField('测试结果')                  # 测试结果
    
        webtester = models.CharField('测试负责人',max_length=16)         # 测试负责人
    
        create_time = models.DateTimeField('创建时间',auto_now=True)     # 创建时间-自动获取当前时间
        class Meta:
            verbose_name = 'web测试用例'
            verbose_name_plural = 'web测试用例'
    
        def __str__(self):
    
            return self.webcasename
         
    
    
    class Webcasestep(models.Model):
    
        Webcase = models.ForeignKey(Webcase,on_delete=models.CASCADE)    # 关联接口id
    
        webteststep = models.CharField('测试步聚',max_length=200)        # 测试步聚
    
        webtestobjname = models.CharField('测试对象名称描述',max_length=200) # 测试对象名称描述
    
        webfindmethod = models.CharField('定位方式',max_length=200)      # 定位方式
    
        webevelement = models.CharField('控件元素',max_length=800)       # 控件元素
    
        weboptmethod = models.CharField('操作方法',max_length=200)       # 操作方法
        webtestdata = models.CharField('测试数据',max_length=200,null=True)        # 测试数据
    
        webassertdata = models.CharField('验证数据',max_length=200)      # 验证数据
    
        webtestresult = models.BooleanField('测试结果')                  # 测试结果
    
        create_time = models.DateTimeField('创建时间',auto_now=True)     # 创建时间-自动获取当前时间
    
        def __str__(self):
    
            return self.webteststep  

    web-view

    from django.shortcuts import render
    
    from django.http import HttpResponse,HttpResponseRedirect
    from django.contrib.auth.decorators import login_required
    from django.contrib import auth
    
    from django.contrib.auth import authenticate, login
    from webtest.models import Webcase,Webcasestep
    from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 
    
    # Create your views here.
     
    
    # web用例管理
    
    
    @login_required
    
    
    def webcase_manage(request):
        
        webcase_list = Webcase.objects.all()
        webcase_count = Webcase.objects.all().count()  #统计产品数
        
        username = request.session.get('user', '') # 读取浏览器登录session
        
        paginator = Paginator(webcase_list, 8)  #生成paginator对象,设置每页显示8条记录
        
        page = request.GET.get('page',1)  #获取当前的页码数,默认为第1页
        
        currentPage=int(page)  #把获取的当前页码数转换成整数类型
        
        try:
            webcase_list = paginator.page(page)#获取当前页码数的记录列表
        
        except PageNotAnInteger:
            webcase_list = paginator.page(1)#如果输入的页数不是整数则显示第1页的内容
        
        except EmptyPage:
            webcase_list = paginator.page(paginator.num_pages)#如果输入的页数不在系统的页数中则显示最后一页
        
        return render(request, "webcase_manage.html", {"user": username,"webcases":webcase_list,"webcasecounts": webcase_count})
    
    
    
    # web用例测试步聚
    @login_required
    def webcasestep_manage(request):
    
        
        username = request.session.get('user', '')
    
            
        webcaseid = request.GET.get('webcase.id',None)  
        webcase = Webcase.objects.get(id=webcaseid)        
        webcasestep_list = Webcasestep.objects.all()
        return render(request, "webcasestep_manage.html", {"user": username,"webcase": webcase,"webcasesteps": webcasestep_list}) 
    
    # 搜索功能
    
    @login_required
    
    def websearch(request):
        
        username = request.session.get('user', '') # 读取浏览器登录session
        
        search_webcasename = request.GET.get("webcasename", "")
        
        webcase_list = Webcase.objects.filter(webcasename__icontains=search_webcasename) 
        
        return render(request,'webcase_manage.html', {"user": username,"webcases":webcase_list})
    
    
    
    # 搜索功能
    @login_required
    
    def webstepsearch(request):
        
        username = request.session.get('user', '') # 读取浏览器登录session
        
        search_webcasename = request.GET.get("webcasename", "")
        
        webcasestep_list = Webcasestep.objects.filter(webcasename__icontains=search_webcasename) 
        
        return render(request,'webcasestep_manage.html', {"user": username,"webcasesteps":webcasestep_list})
    # web测试报告
    
    
    @login_required
    
    def webtest_report(request):
        
        username = request.session.get('user', '')
        
        return render(request, "webtest_report.html")
    幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。
  • 相关阅读:
    IOS 改变UISearchBar的背景色
    电话正则表达式
    理解Callable 和 Spring DeferredResult(翻译)
    Java设计模式——观察者模式(事件监听)
    SpringMVC注解@initbinder解决类型转换问题
    内部系统间调用client包的封装方法
    Java中Comparable和Comparator实现对象比较
    linux上FTP服务器搭建
    百度地图——判断用户是否在配送范围内解决方案
    nodejs之express的使用
  • 原文地址:https://www.cnblogs.com/TodayWind/p/14098093.html
Copyright © 2011-2022 走看看