欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

测试开发进阶(三十九)

程序员文章站 2024-03-22 08:10:46
...

首页

使用一个简单的get函数返回需要的内容

statistics = {	
    'projects_count': projects_count,	
    'interfaces_count': interfaces_count,	
    'testcases_count': testcases_count,	
    'testsuits_count': testsuits_count,	
    'configures_count': configures_count,	
    'envs_count': envs_count,	
    'debug_talks_count': debug_talks_count,	
    'reports_count': reports_count,	
    'success_rate': success_rate,	
    'fail_rate': fail_rate,	
}

他们都是从数据库中计算并统计出来的

需要有权限才能访问

permission_classes = [permissions.IsAuthenticated]

代码:

from rest_framework.views import APIView	
from rest_framework.response import Response	
from rest_framework import permissions	
from django.db.models import Sum	
from projects.models import Projects	
from interfaces.models import Interfaces	
from testcases.models import Testcases	
from testsuits.models import Testsuits	
from configures.models import Configures	
from envs.models import Envs	
from debugtalks.models import DebugTalks	
from reports.models import Reports	
class SummaryAPIView(APIView):	
    """	
    返回统计信息	
    """	
    permission_classes = [permissions.IsAuthenticated]	
    def get(self, request):	
        """	
        获取统计信息	
        """	
        user = request.user	
        user_info = {	
            'username': user.username,	
            'role': '管理员' if user.is_superuser else '普通用户',	
            'date_joined': user.date_joined.strftime('%Y-%m-%d %H:%M:%S') if user.date_joined else '',	
            'last_login': user.last_login.strftime('%Y-%m-%d %H:%M:%S') if user.last_login else '',	
        }	
        projects_count = Projects.objects.filter(is_delete=False).count()	
        interfaces_count = Interfaces.objects.filter(is_delete=False).count()	
        testcases_count = Testcases.objects.filter(is_delete=False).count()	
        testsuits_count = Testsuits.objects.filter(is_delete=False).count()	
        configures_count = Configures.objects.filter(is_delete=False).count()	
        envs_count = Envs.objects.filter(is_delete=False).count()	
        debug_talks_count = DebugTalks.objects.filter(is_delete=False).count()	
        reports_count = Reports.objects.filter(is_delete=False).count()	
        run_testcases_success_count = Reports.objects.filter(is_delete=False).aggregate(Sum('success'))[	
                                          'success__sum'] or 0	
        run_testcases_total_count = Reports.objects.filter(is_delete=False).aggregate(Sum('count'))['count__sum'] or 0	
        if run_testcases_total_count:	
            success_rate = int((run_testcases_success_count / run_testcases_total_count) * 100)	
            fail_rate = 100 - success_rate	
        else:	
            success_rate = 0	
            fail_rate = 0	
        statistics = {	
            'projects_count': projects_count,	
            'interfaces_count': interfaces_count,	
            'testcases_count': testcases_count,	
            'testsuits_count': testsuits_count,	
            'configures_count': configures_count,	
            'envs_count': envs_count,	
            'debug_talks_count': debug_talks_count,	
            'reports_count': reports_count,	
            'success_rate': success_rate,	
            'fail_rate': fail_rate,	
        }	
        return Response(data={	
            'user': user_info,	
            'statistics': statistics	
        })

如何使用

  1. 项目管理-项目新增

  2. 维护内置函数debugtalk.py

  3. 环境管理-环境新增

  4. 接口管理-接口新增

  5. 配置管理-配置新增

  6. 用例管理-用例新增

部署

流程

  1. 安装操作系统

  2. 安装python

  3. mysql

  4. 搭建Django环境--各种模块的安装

  5. nginx

  6. gunicorn

  7. docker

  8. docker-compose

  9. docker-swarm

由于还没有学习 docker暂时不继续,先行学习 docker

Shell

  1. 命令解释器

  2. shell就是在操作系统和应用程序之间的一个命令翻译工具

shell的分类

  • Winodws中

cmd.exe命令提示字符

  • linux中

  • sh

  • bash

  • zsh

常用命令

  • head:默认获取文件前十行

  • tail:默认获取文件后十行

获取一个区间,第10~13行

$ head -n13 xxx | tail -n4
  • cut:取出文本指定列

-d:指定分割符

-f:指定列

Name Age Score	
a 25 90	
b 26 91	
c 27 92	
d 28 93
$ cut -d" " -f1 learn_cut.txt

测试开发进阶(三十九)

  • uniq:去除重复项

-d:仅打印有重复的元素

-c:打印元素重复的个数

  • sort:对文本的内容进行排序

默认以字符串的ASCII码数值从小到大排序

-n:以数值大小排序

-r:倒序

-t:指定分割符,默认为空格

-knum:指定以某个字段来排序

# 以:分割的第三列的数值大小排列	
$ sort -t":" -k3 -n /etc/passwd

测试开发进阶(三十九)

  • wc「word count」计算文本数量

-l:打印行数

-w:打印单词数

-c:打印字节数

-L:打印最长行的字节数

变量

  • 本地变量

  • 全局变量

  • 内置变量

定义变量

等号前后不能有空格

$ username="89"	
$ username=a b # 错误	
$ username="a b" #正确
  • 单引号:所见即所得

不能插值

$ p=python	
$ u='I love $p'	
$ echo $u	
$ i="I love $p"	
$ echo $i

测试开发进阶(三十九)

将命令的结果返回给变量

$ o=$(ls)	
$ p=`ls`

测试开发进阶(三十九)

测试开发进阶(三十九)

(局部)全局变量

$ env

测试开发进阶(三十九)

$ echo $USER

测试开发进阶(三十九)

定义全局变量
  1. export 变量

  2. export 变量=值

~/.bashrc中创建才是真正的全局变量

内置变量

  • $0:获取当前执行的shell脚本文件名,包括脚本路径

  • $n:当前shell脚本的第n个参数(n>9需要使用 ${10})

  • $#:获取当前shell命令行中参数的总个数

  • $?:获取执行的上一个命令的返回值(0为成功,非0为失败)

#!/bin/bash	
echo "参数的总个数:$#"	
echo "脚本名为:$0"	
echo "第二个参数:$2"	
echo "第十个参数:${10}"	
echo "获取所有参数:$*"

测试开发进阶(三十九)