专栏首页测试游记测试开发进阶(三十九)

测试开发进阶(三十九)

首页

使用一个简单的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 APIViewfrom rest_framework.response import Responsefrom rest_framework import permissionsfrom django.db.models import Sumfrom projects.models import Projectsfrom interfaces.models import Interfacesfrom testcases.models import Testcasesfrom testsuits.models import Testsuitsfrom configures.models import Configuresfrom envs.models import Envsfrom debugtalks.models import DebugTalksfrom reports.models import Reportsclass 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 Scorea 25 90b 26 91c 27 92d 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/bashecho "参数的总个数:$#"echo "脚本名为:$0"echo "第二个参数:$2"echo "第十个参数:${10}"echo "获取所有参数:$*"

本文分享自微信公众号 - 测试游记(zx94_11),作者:zx钟

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • c2py试用(一)

    转变 C/C++的 .h文件为python模块源文件,所有匹配都基于c++限定名,使用正则表达式。

    zx钟
  • 测试开发进阶(八)

    self._target(*self._args, **self._kwargs)

    zx钟
  • Git通过变基将提交变得更美观

    通过git log --graph我们可以看到,之前是三个提交的,现在前面两个提交已经合为了一个

    zx钟
  • 你是一直认为 count(1) 比 count(*) 效率高么?

    MySQL count(1) 真的比 count(*) 快么? 反正同事们都是这么说的,我也姑且觉得对吧,那么没有自己研究一下究竟?如果我告诉你他们一样,你信么...

    java思维导图
  • 好问题:count(1)、count(*)、count(列)有什么区别?

    当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!

    Java技术栈
  • Java自增自减运算符神坑笔试题

    mathor
  • MySQL count()函数及其优化count(1),count(*),count(字段)区别

    JavaEdge
  • 案例解析:count(1)、count(*) 与 count(列名) 的执行区别

    很多人认为count(1)执行的效率会比count()高,原因是count()会存在全表扫描,而count(1)可以针对一个字段进行查询。其实不然,count(...

    搜云库技术团队
  • 执行COUNT(1)、COUNT(*) 与 COUNT(列名) 到底有什么区别?

    来源:blog.csdn.net/iFuMI/article/details/77920767

    好好学java
  • IRscope代码拆解一

    readLines()函数读入文本文件,结果好像是一个向量,文件中的每行是向量中的一个元素。

    用户7010445

扫码关注云+社区

领取腾讯云代金券