测试开发进阶(三十九)
首页
使用一个简单的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
})
如何使用
项目管理-项目新增
维护内置函数debugtalk.py
环境管理-环境新增
接口管理-接口新增
配置管理-配置新增
用例管理-用例新增
部署
流程
安装操作系统
安装python
mysql
搭建Django环境--各种模块的安装
nginx
gunicorn
docker
docker-compose
docker-swarm
由于还没有学习 docker
暂时不继续,先行学习 docker
Shell
命令解释器
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
定义全局变量
export 变量
export 变量=值
在 ~/.bashrc
中创建才是真正的全局变量
内置变量
$0
:获取当前执行的shell脚本文件名,包括脚本路径$n
:当前shell脚本的第n个参数(n>9需要使用${10}
)$#
:获取当前shell命令行中参数的总个数$?
:获取执行的上一个命令的返回值(0为成功,非0为失败)
#!/bin/bash
echo "参数的总个数:$#"
echo "脚本名为:$0"
echo "第二个参数:$2"
echo "第十个参数:${10}"
echo "获取所有参数:$*"
上一篇: 2020-10-12
下一篇: 测试开发进阶(二十七)