自动化平台总结(httprunner+djangorestframework+python3+Mysql+Vue)【基础结构构思】

news2024/11/17 3:30:04

目录

一、前言

二、简介

三、整体结构

🎁更多干货

完整版文档下载方式:


一、前言

  把一个以前自己搭建的自动化测试平台进行了一下重构升级,记录一下过程中的一些问题和总结。

二、简介

  搭建的平台语言使用的是Python3.6,未来有空可能考虑加个java版本。前端用的Vue,主体是httprunner2.X+Djangorest-framework,平台作用是公司内部使用,mysql数据库就够用。

三、整体结构

  考虑的结构是

  后台:

  1. drfproject目录,工程创建时的系统的配置数据存放目录,命名根据项目创建时的需求
  2. app目录,存放平台下的子应用,目前用户这块的应用直接用自带的应该就够了
    1. 项目模块代码存放目录
    2. 接口模块代码存放目录
    3. 报告模块代码存放目录
    4. 测试用例模块代码存放目录
    5. 用例套件模块代码存放目录
    6. 用户模块代码存放目录(使用系统自带模块)
    7. 环境变量模块代码存放目录
    8. 系统配置模块代码存放目录
    9. 数据统计模块代码存放目录
    10. debugtalk模块代码存放目录
  3. util目录,存放一些数据处理的自定义模块,基本上应该存在suits目录,存放将要运行的目录文件,目前的考虑是用时间戳作为存放文件的最外层,避免多次运行的覆盖问题
    1. 最基础的对应数据库数据的读写参数的处理
    2. 网页列表参数的基本的分页过滤数据处理
    3. 因为httprunner所需要的用例格式是‘.yaml’,所以需要对用例文件的创建和文件内容的组装处理
    4. 报告的数据处理,将运行后的参数进行过滤后填充进报告里
    5. 定期清理模块,可加可不加,这方面人工更精准,清理的时间间隔这一块根据平台需求来定(如果数据需要保存的时间周期长或者需要根据需求删选,可以直接人工清理)
    6. 看平台需求的其他功能模块
  4. log目录,存放运行中需要记录的日志信息
  5. report目录,存放运行完毕后或者数据库导出的报告(嫌麻烦可以使用自带的格式模板,有其他需求可以寻找开源的报告模板)
  6. venv目录,虚拟环境数据

  前端(Vue):

  首页(数据统计)+8个模块组

  数据库(Mysql)

  把一个自动化平台的基础结构设计清楚后,下一步就是表与表之间的关联关系、表的字段及对应的数据效验方法设计了。

  首先排除无关联关系或者关联关系可有可无的数据表,比如用户表、报告表、环境变量等,把这些表排除之后就可以开始画图考虑关联了(也就是外键关联)。因为平台会使用Django自带的数据库迁移功能,中途的修改重构比较麻烦,所以表结构和表关联的重构次数越少越好,一次搞定是最好的。具体的设计根据自己需要的功能来设计就行。

  1. 表与表之间的关联
    1. 例如我刚搭建的平台构思,项目和接口是一对多、项目和debugtalk是一对一、项目和用例套件是一对多、接口和用例是一对多。接口和配置是一对多等等。
  2. 表的字段(模块的model)
    1. 最容易出问题的地方,尽可能的考虑周全,最好在设计完之后画一个设计图或者列一个Excel表格,然后开一个小会讨论一下,众人拾柴火焰高。
    2. 设计时不仅要根据需求考虑需要的字段,还要考虑字段的归属表、字段的列属性、字段的数据类型、字段在功能中的属性(可读可写/只读/只写)等,drf中自带的数据效验是根据此时的设计进行的,所以考虑的越周全越好。
    3. 还要根据各个模块需要实现的功能来综合考量。
  3. 数据效验(模块的序列化器)
    1. 最重要的地方,可以理解成数据的防火墙,效验规则设计得好可以避免垃圾数据的产生,使整体的数据参数规范化,减少代码冗余,对于整体平台的运行效率会有一个质的提升。
    2. 最基础的数据类型效验drf代劳了,只用考虑剩下的关联关系效验、数据格式效验、功能运行中可能存在的异常情况等。

基本上平台的基础结构这一个框架够用了,本来这一篇也只是做一个思路上的记录和回顾,剩下的等到下一篇在进行深入。代码层面不会过于深入,毕竟技术更新日新月异,但是整体的思路不会变的很快,无非就是细节方面的变化。

等待后续更新完毕后,可能会进行前面博客写的playwright的使用总结或者升级插件的问题总结,到时候再说吧


🎁更多干货


 

完整版文档下载方式:

这些资料,对于从事【软件测试】等相关工作的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享。

在评论区和我互动交流或者私❤我【软件测试学习】领取即可,拿走不谢。


如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “👍点赞” “✍️评论” “💙收藏” 一键三连哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/728560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle中没有show tables;如何用指令来显示表名,Excel关于VLOOKUP函数的使用。

一、问题:Oracle中没有show tables;如何用指令来显示表名。 解决方案: owner NAPSDEV更换为owner CNAPSIIDB。NAPSDEV是用户名,CNAPSIIDB是数据库名。在这里,我想让它显示的是我在Navicat中的CNAPSIIDB数据库下的所有表的名称。所…

Python - Django框架 - 简单运行

pycharm创建django项目 确保安装了Python 安装django pip install Django 创建django项目 django-admin startproject django_study 切换到django目录并启动 cd django_study python manage.py runserver 开发服务器将在默认的localhost:8000上运行,可以在浏览器中访…

vue-cute-timeline插件使用

效果 (内容覆盖的有些丑,别在意哈,重点是时间线的展示)element也有类似的时间线,但是不能使用类似这样的图片 所以就采用了vue-cute-timeline插件 使用方法(可自行百度) 安装:npm i…

服务器防止漏洞扫描解决方案

1、定期更新操作系统与应用程序 为了修复可能存在的漏洞和安全问题,建议定期对服务器的操作系统与应用程序进行更新。特别是对于那些常常成为黑客攻击目标的应用程序,比如WordPress等,更新是不可或缺的。通过更新,不仅可以增强服…

管理执行系统-亿发MES智能制造系统赋能制造企业信息化,实现工业现代化

在制造技术领域,质量控制信息集成建设需要健全的管理体系,加强全过程管理。虽然管理执行系统 (MES) 背后的理论思维已经取得了重大进展,但在软件应用集成和分析能力方面仍有改进的空间。本文将探讨MES系统如何赋能制造企业信息化,…

Linux内核源码下载

参考文章:https://blog.csdn.net/m0_49328056/article/details/121669035 一、git命令下载 1、进入官网:https://www.kernel.org/ mainline(主线版本)、stable(稳定版本)、longterm(长期演进版…

DAY41:贪心算法(十)监控二叉树

文章目录 968.监控二叉树思路遍历顺序空节点处理情况列举 最开始的写法debug测试:travelsal的输出多了1 修改版二叉树注意点时间复杂度总结 968.监控二叉树 给定一个二叉树,我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及…

SpringBoot多模块项目整合JPA,解决被依赖模块Dao层无法注入的问题

DAO层: 报错: 解决办法:被依赖模块的DefaultConfig类加上如下注解,问题即解决 ComponentScan(basePackages "com.fdw.study.*") Configuration EnableJpaRepositories(value "com.fdw.study.dao") EntityS…

Linux0.11内核源码解析-read_write.c

目录 sys_lseek read write read_write.c主要是实现文件系统调用read(),write()和lseek()三个功能 read和write函数分别是调用file_dev.c/pipe.c/block_dev.c/char_dev.c实现相对应的函数 sys_lseek lseek实现系统调用将对文件句柄对应文件结果体中的当前读写指针进行修改&…

matplot 显示文本

import matplotlib.pyplot as plt# 绘制一些数据 x_data [1, 2, 3, 5] y_data [2, 4, 8, 10] plt.plot(x_data, y_data,o,markersize 20)# 添加文本注释 text [a,b,c,d] for i in range(4):plt.text(x_data[i], y_data[i],text[i], fontdict{family: serif, size: 16, col…

leetcode极速复习版-第五章栈与队列

目录 栈与队列 理论基础 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值 239.滑动窗口最大值 347.前 K 个高频元素 栈与队列 理论基础 队列是先进先出,栈是先进后出。 232.用栈实现队列 使用栈实现队…

动态路由,微信小程序绑定

■登录成功之后添加动态路由 ●登录的时候会获取到它的菜单配置■动态路由 | Vue Router <view wx:for"{{list}}">{{index}}--- {{item.name}} </view><view wx:for"{{list}}" wx:for-item "ttt" wx:for-index"num"&…

第二节 给SpringBootAdmin的server端加入spring security安全控制

前言 本来想用一节就写完SpringBootAdmin的&#xff0c;但随着研究的深入发现一节应该是不够的&#xff0c;网上的资料也不会非常系统&#xff0c;官网的例子有些已经好几年没更新了&#xff0c;所以接下来还是系统性的来写下吧 第一节 完成基础配置&#xff0c;暴露所有端点…

Qt-->QQ登陆界面图形化界面

#include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui->setupUi(this);this->setFixedSize(640,520);//设置窗口标题this->setWindowTitle("QQ&qu…

勒索病毒危害,企业该如何预防勒索病毒

勒索病毒是一种恶意软件&#xff0c;它会对企业内的计算机系统或数据进行加密或锁定&#xff0c;并要求企业支付赎金以解锁或解密。 勒索病毒危害&#xff1a; 数据丢失&#xff1a;勒索病毒可以加密您的文件、照片、视频和其他重要数据&#xff0c;使其无法访问或恢复。如果…

解决centos7和主机win11不能互传文件复制粘贴;及CentOS7最小安装版 VMware Tools安装

linux.iso 中的文件已经加载到 /mnt/cdrom 目录下了。在 /mnt/cdrom 中找到加载出来的文件并拷贝到 /tmp目录下&#xff0c;进行解压。解压好后从中找到 vmware-install.pl&#xff0c;这是vmware tools的安装文件&#xff0c;执行此文件开始安装 ./vmware-install.pl 一路Ente…

宏基因组碳循环高分分析思路,你值得拥有!

碳是生命物质中的主要元素之一&#xff0c;是有机质的重要组成部分。地球上主要有四大碳库&#xff0c;即大气碳库&#xff0c;海洋碳库、陆地生态系统碳库和岩石圈碳库。碳循环&#xff0c;是指碳元素在自然界的循环状态&#xff0c;大气中的二氧化碳&#xff08;CO2&#xff…

Shamir秘密共享

目录 Shamir秘密共享 秘密共享的概念 问题1: 问题2: 秘密分割门限方案的定义 Shamir秘密共享方案 组成 构造思路 构造 计算f(x) 例1 例2 二、GMW方案 Shamir秘密共享 秘密共享的概念 问题1: 保险柜中存放有10个人的共有财产&#xff0c;要从保险柜中取出物品&am…

【Python编程系列】5、变量

作用 变量用来存储数据: a = 10使用规则 python作为解释型,属于弱类型和动态型语言。它不需要强制声明变量的数据类型,因为它不需要编译。一般要编译的语言需要明确所有的东西,只有这样才能编译成二进制文件。 由于不需要声明数据类型,那么在声明变量时会一并赋值: …

什么是serialVersionUID?为什么要使用它?

目录 一、什么是serialVersionUID二、创建一个serialVersionUID三、使用 serialVersionUID3.1 序列化实例程序3.2 反序列化实例程序3.3 serialVersionUID不同的情况下进行序列话和反序列化3.4 能不能不提供serialVersionUID&#xff1f; 一、什么是serialVersionUID SerialVer…