django实战--测试管理平台
文章平均质量分 75
django已经成为web开发者的首选框架,是一个遵循 MVC设计模式的框架。MVC指Model、View、Controller,分别代表模型、视图、控制器。django其实也是一个MTV 的设计模式。MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图。
每 天 早 睡
不积跬步,无以至千里;不积小流,无以成江海
展开
-
Django--31Django知识体系梳理总结
View:用户在访问URL的时候,它会被导到具体的View,根据View里面的具体代码,找到应该使用哪个Template、Form(收集数据)、Model(保存、查询数据),他们一起合作就完成整个请求应答的过程。VIEWS处理了业务逻辑,把处理的结果组装成一个页面返回给Template,在此之前通过context把Template要使用的数据传过去;Template把数据传给middleware,再返回到gunicorn,再返回到nginx,最后返回到浏览器。一切都是为了分工协作。...原创 2022-08-11 00:40:40 · 190 阅读 · 0 评论 -
Django--30Docker部署Django项目到Linux生产环境
TEST_PLT_API_TIMEOUT使用元组数据类型,django-environ-2会自动转成字符串,而我们要的是数值,需要把TEST_PLT_API_TIMEOUT拆开TEST_PLT_API_TIMEOUT_CONNECT和TEST_PLT_API_TIMEOUT_RESP分别进行配置,再到settings配置数值类型的变量。DINGTALK_WEB_HOOK_TOKEN和DINGTALK_WEB_HOOK_SIGN用自己的钉钉配置。注意:docker-compose文件编写一定要仔细!.....原创 2022-08-09 02:57:10 · 1253 阅读 · 1 评论 -
Django--29用户权限设计
这样至少保证在django(auth)眼里,用户加入的组都是(在项目中)客观存在的。这样防止用户选择不该具有权限的项目,避免通过从其他项目的组获得权限操作不相干的项目。4、漏洞在不同项目中具有不同角色时,会在所有加入的项目中获得所持有的组的权限合集。确保项目成员设置的角色单向同步到auth的角色(因为要在auth层面跟权限结合)1、使得auth的用户和组关系,要随着项目成员和组关系的变化而变化(同步)这个问题在于要提供对象粒度的权限控制,而auth提供的是Model粒度的。...原创 2022-07-28 02:16:50 · 1038 阅读 · 0 评论 -
Django--28Django官版UI细节调整及使用simpleui换肤
Django会提供pythonmanage.pycollectstatic,把整个项目所有的静态资源(还包括js、css),归集到一起(STATIC_ROOT)。collectstatic时,会扫描STATICFILES_DIRS下的静态资源,以及所有注册的app下的静态资源。STATICFILES_DIRS目录是全局的静态资源配置,可以指定每个app的静态资源,和共享的静态资源;开发时,分app开发,每个app下可能有静态资源,还有全局的静态资源怎么办?静态文件的独立性,能被独立部署到CDN。...原创 2022-07-28 01:11:50 · 677 阅读 · 0 评论 -
Django--27实现钉钉群通知测试结果
4.settings.py配置webhook和sign。2、安全设置,设置自定义关键词和加签(酌情考虑)1、选择【通过webhook介入自定义服务】3.安装DingtalkChatbot库。2.从智能群助手【添加机器人】5.创建dingtalk模块。钉钉(非常简单易用!邮件email(0成本)微信、QQ(手续复杂)二、钉钉群通知实现步骤。3、获取webhook。......原创 2022-07-27 23:18:00 · 346 阅读 · 3 评论 -
Django--26Django版本升级以及国际化翻译实现
3、将django-celery-results和django-celery-beat的源代码拷贝到test_plt_app相同目录下。6、从test_plt同目录下删除django-celery-results和django-celery-beat的源代码。为django-celery-results和django-celery-beat提供翻译。8、使用poedit翻译po文件,注意保存时会自动生成mo文件。2、运行单元test(如果有)1、阅读发行注记(说明)2、数据库结构、数据依赖。...原创 2022-07-27 22:32:23 · 743 阅读 · 0 评论 -
Django--25Django性能优化
阅读者(浏览器)----Django----DBMysql----渲染页面----浏览器。一个页面有很多板块,每块内容都来自数据库查询,20个查询,每次10个变,10个不变;阅读者(浏览器)----Django----缓存的页面----浏览器。三、Django性能调试工具django-debug-toolbar。优化策略把渲染好的页面,缓存起来,下次访问时直接返回给浏览器。1、写少读多1篇新闻----1000万人阅读;1、好的性能是设计出来的,不是测试出来的。...原创 2022-07-27 02:11:20 · 606 阅读 · 0 评论 -
Django--24解决日志文件写入和执行celery默认清除任务backend_cleanup()报错问题
在LOGGING中,用concurrent_log_handler.ConcurrentRotatingFileHandler代替logging.RotatingFileHandler。二、执行celery默认清除任务backend_cleanup()报gotanunexpectedkeywordargument'periodic_task_id’错误。解决方法约定只为以_periodic结尾的task函数传递periodic_task_id。......原创 2022-07-27 00:38:12 · 729 阅读 · 1 评论 -
Django--23实现测试批次和报告
一、测试批次1.Model设计开始时间结束时间任务类型运行方式运行状态错误消息计划任务创建人统计信息接口计划数量实际数量成功数量成功率用例计划数量实际数量成功数量通过率套件计划数量实际数量成功数量通过率2.Model代码实现二、报告对象:接口/用例/套件每个对象定义计划/实际/成功(通过)/比率Model–TestBatch代码实现:三、部分代码实现admin代码实现:common代码实现:tasks代码实现:界面显示:......原创 2022-07-27 00:09:10 · 132 阅读 · 0 评论 -
Django--22实现用例和套件的异步执行以及计划任务
一、实现用例和套件的异步执行思考:admin里面的action方法,和此处的task函数,是不是在同一个进程里运行??不是实现步骤:1.把admin中用例和套件执行代码提取到tasks中,使用celery框架的task.delay方法调用;2.重新启动celery worker,启动flower监控,执行用例或套件,通过celery results界面查看任务执行情况,并查看测试履历结果。admin.py文件实现用例和套件的异步执行部分代码:tasks.py文件代码实现:二、实现用例和套件的计划原创 2022-07-14 02:28:46 · 932 阅读 · 0 评论 -
Django--21Windows系统下安装Celery、RabbitMQ
一、业务场景分析1.生活中的例子:取款取500元和取500万区别2.平台中的场景执行3个用例,平均每个用例5个接口执行300个用例,平均每个用例20个接口每天凌晨自动跑回归测试多项目并发执行,超过单机承受能力二、实现思路分析1.不能让人干等参考银行大额提款的解决方案1、向用户手机执行重型/耗时任务所需的“参数”2、后台根据参数执行重型/耗时任务3、执行完毕之后通知用户事后查看报告2.要支持定时任务3.要支持监控4.要支持多项目大规模并发执行排队执行分布式执行三、技术解决方案思考:同步还是异原创 2022-07-12 01:01:30 · 604 阅读 · 1 评论 -
Django--20按项目过滤展示数据
一、现阶段1、在项目列表,增加一个【设置默认项目】的操作。2、在其他所有跟项目相关(以项目为外键)的Model列表,根据选择的默认项目进行过滤,只显示和当前默认项目相关的记录。二、默认项目数据保存在哪里?保存在session中。三、Django方面技术要点(按缺省项目过滤数据):核心方法:对于列表页:get_queryset对于Inline:formfield_for_foreignkey之kwargs[‘queryset’]对于普通表单:get_form之base_fields[‘pro原创 2022-07-11 01:43:22 · 192 阅读 · 0 评论 -
Django--20实现Redis支持、上下文以及上下文和接口的交互
一、业务场景分析1.待测系统典型的前后端分离系统yshop电商后台2.登录场景1、获取验证码问题和uuid接口:/auth/code目的:获取UUID作为获取验证码答案的redis keyredis:Not Only SQL2、获取验证码答案(redis)接口:redis目的:获取验证码答案,传递给登录接口3、调用登录接口接口:/auth/login目的:获取认证令牌(Bearer Token),为后续的所有需要验证的接口所用4、获取用户接口列表接口:/api/users目的原创 2022-07-11 01:34:24 · 231 阅读 · 0 评论 -
Django--19开发用例系列功能
一、利用Django开发基本流程:1.分析业务含义2.设计实体关系3.设计Model4.将Model落实到代码5.注册到admin托管Model6.开发action实现增删改查之外的功能7.调整页面细节二、梳理实体关系1.用例1)两种常见形态:1、对于非API测试2、对于API测试2)model设计3)功能设计1、用例执行2、用例执行履历参见履历设计3、Django日志2.用例接口1、用例和接口的关系2、主model设计基础信息用例接口执行顺序失败时终止认证信息Basic认证原创 2022-06-24 01:03:09 · 170 阅读 · 0 评论 -
Django--18接口执行履历开发-产品细节优化
一、为什么需要产品优化1)没有完美的软件2)细节见功夫3)在企业开发实践中,经常做4)偿还技术债赶工期留下的尾巴5)在特别赶工期的项目中很难,而且只能见缝插针做二、接口定义表单优化bugfix:创建人遗失1)设置默认创建人2)回顾知识点:面向对象的三大特性封装、继承、多态3)实现三、接口定义的默认参数带到执行表单1)实现步骤:1、获取接口定义关联的三组关系数据2、将各组数据转换为JSON(或纯文本)3、将三组文本作为表单的初始化数据2)接口运行参数表单字体调整字体:等宽字体、非等宽原创 2022-06-01 01:33:43 · 137 阅读 · 0 评论 -
Django--17接口执行履历开发-支持接口认证
一、常见的认证类型1)无须认证2)HTTP Basic Auth3)Bearer Token(JWT)4)Cookie/Session一般正经的api系统不用、暂不实现二、为接口运行携带认证信息1)HTTP Basic Authusernamepassword通过HTTP Header携带2)Bearer TokenToken通过HTTP Header携带3)共通通过表单手机所需的认证数据三、requests怎么处理?HTTP Basic AuthBearer Token四、主要代原创 2022-06-01 00:56:09 · 243 阅读 · 0 评论 -
Django--16接口执行履历开发-解决日期时间问题
一、现象日期时间被显示为2022-05-28 16:20:37.386114+00:001、小时不对2、+00:00是什么列表页时间显示正常,详情页相差8小时数据库原始的表记录,时间和页面相差8小时二、日期时间的概念1)日期、时间(Datetime)DateTimeDatetime2)时区(Time Zone)比如北京时间:东8区3)UTUniversal Time4)UTCUniversal Time Coordinated(协调)三、Django的时区处理1)时区的设置set原创 2022-06-01 00:45:38 · 178 阅读 · 0 评论 -
Django--15接口执行履历开发-解决中文编码问题
一、实验出现的问题1)在查询参数中包含中文出现了\u4f60这样不可识别的字符(unicode编码)出现了\u4f60和%E4%BD这样不可识别的字符(unicode编码)2)在请求头中包含中文接口运行出错:‘ascii’ codec can’t encode…3)在请求体中包含中文(JSON类型)应答体JSON出现了\u4f60这样的不可识别的字符4)在请求体中包含中文(TEXT类型)接口运行出错:‘latin-1’ codec can’t encode…5)在请求体中包含中文(FORM类型)原创 2022-05-31 23:26:47 · 127 阅读 · 0 评论 -
Django--14接口管理-接口执行履历开发
一、什么是履历1)谁?用户2)在什么时间?开始、结束3)在什么地点?服务器节点/服务/功能4)做了什么事?执行操作5)产生了什么结果/影响?二、履历的作用1)记录再现、复盘追踪2)审计安全审计合规要求3)统计成功率性能报表二、常见的履历参考1)Django字典的履历:HistoryModel级只记录增删改2)WEB访问日志3)WEB错误日志三、接口执行履历设计1)功能设计请求信息应答信息开始结束时间执行结果履历展示2)Model设计1.请求信息2.应答信息3原创 2022-05-31 22:59:40 · 159 阅读 · 0 评论 -
Django--13接口管理-数据校验和表单渲染优化
一、接口参数校验forms.Form的子类里,以clean_开头,后面跟着属性名的方法,会被Django调用,以处理数据校验(自定义的,业务上的校验)。1)字面上(必须、数值、字符串、日期、时间、email…)2)业务上(符合某种业务逻辑)forms修改字段类型JSONField报错:from django import formsclass RunApiForm(forms.Form): query_params = forms.JSONField(label='查询参数', re原创 2022-05-24 21:58:23 · 282 阅读 · 0 评论 -
Django--12接口管理-admin actions和表单模块开发
admin.py:import jsonimport requestsfrom django.contrib import adminfrom django.contrib.admin import ModelAdminfrom django.db import modelsfrom django.forms import TextInput, Textareafrom django.http import HttpResponseRedirectfrom django.shortcuts原创 2022-05-23 23:13:36 · 332 阅读 · 0 评论 -
Django--11接口管理-项目分析与model和admin核心模块开发
1.已经开发的功能回顾测试项目管理Django Model设计Django Migrations(数据库整合)Django admin app接管Model CRUDDjango admin app页面元素调整数据库表设计经验项目成员管理业务概念之间的关系梳理Django Model多对多关联ManyTOManyField其他:模仿“测试项目管理”部署环境管理Django Model一对多关联ForeignKeyDjango ORMModel设计使用ORM CRUD使用原始m原创 2022-05-22 23:38:11 · 227 阅读 · 0 评论 -
Django--10技术准备之协议及报文
一、HTTP通讯过程WSGI(CGI):Python Web Server Gateway Interface二、HTTP报文格式定义请求报文的目的:节约浏览器和服务器沟通的成本,代码只需要写一套就OK了。三、Restful接口定义1)URI和URLURI:Uniform Resource Identifier 统一资源标识符URL:Uniform Resource Locator 定位符比如:http://order.jd.com/foo/item.action?orderid=原创 2022-05-17 01:22:51 · 178 阅读 · 0 评论 -
Django--09Django框架之shell应用及MVC设计模式
一、django shell应用1)python编程三种模式pycharm:python自带IDE:命令行模式:2)命令行模式下的增删改查from test_plt.models import *from django.contrib.auth.models import Useruser = User.objects.get(pk=1)# 查询user.usernameuser.first_name# 修改user.first_name='管理员'user.save()原创 2022-04-10 18:34:52 · 674 阅读 · 0 评论 -
Django--08ORM设计
一、初识Django的ORM设计1.什么是ORM?Object-Relational MappingO:编程语言中的对象R:关系型数据库M:抹平O和R的鸿沟(通过映射)2.映射的层次表(数据库表):类(Model)行:对象(实例)字段(表字段):属性(Model属性)3.ORM的好处1)面向对象编程,不需要精通数据库2)免写简单且重复的底层CRUD SQL真写起来有多酸爽?试试CRUD SQL3)屏蔽不同数据库的差异Mysql/Oracle/PostgreSQL4)容易移原创 2022-04-10 18:13:10 · 1326 阅读 · 0 评论 -
Django--07项目管理模块级联开发&界面元素位置优化
一、从Model整合到主Model的admin表单1)将项目成员和部署环境整合到项目Model表单1.继承adminInlineModelAdmin的子类声明内联模型管理器TabularInline 表格化StackedInline 堆叠化2.关联到主Model的ModelAdmin.inlines2)规整一些代码1.调整fields:fields = ('name', ('version', 'type'), ('created_by', 'status'), 'description原创 2022-04-10 18:01:57 · 1034 阅读 · 0 评论 -
Django--06项目管理模块关联模型
一、梳理各个模型之间的关系1)项目和项目成员的关系关系特点:一个项目可以有多个成员----多个一个成员可以在几个项目----多个M:N关系落实到mysql(RDBMS)怎么设计?----中间表M:N关系在Django中怎么实现?----ManyToManyField一起实现“项目成员”的Model设计----要管理的字段----项目、用户、加入日期、角色(测试员/测试组长/测试经理/开发/运维/项目经理)、状态、退出日期、备忘录2)项目和部署环境的关系关系特点:一个项目可以有几个环境?-原创 2022-04-09 18:19:51 · 765 阅读 · 0 评论 -
Django--05项目管理模块数据库对象优化
一、字段类型的选择mysql数据类型:datatime 8个字节 性能是毫秒级的integer 4个字节bigint 8个字节varchar 最大长度65535字节char 最大长度255字节使用数据类型需要考虑:存储空间计算复杂度能否利用内置函数1)ID生成策略文章:varchar、text 64K身份证号码ID项目ID:1、自增字段AutoField,integer/auto increment缺点自增字段暴露关键的业务信息(渗透测试)2、uuid对索引来说不友好原创 2022-04-09 18:18:17 · 92 阅读 · 0 评论 -
Django--04项目管理模块前端优化及属性追加
一、增加相关名称定义步骤:先找到GUI元素对应的代码文件再增加相关名称定义1)修改TEST_PLT的显示verbose_nameapps.py文件:from django.apps import AppConfigclass TestPltConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' # 面向程序的名称 name = 'test_plt' # 面向人类的名称原创 2022-04-09 18:17:10 · 119 阅读 · 0 评论 -
Django--03git代码托管
一、git下载安装1.1 git安装1.进入网站:https://git-scm.com/,点击下载按钮如下图所示:2.也可以直接从其他站点下载安装包3.双击运行安装程序,如下图所示:4.选择相关组件选项,如下图所示:5.选择相关的编辑器,如下图:6.配置环境变量路径,如下图所示:7.选择HTTPS连接方式,如下图所示:8.选择行结尾转换,保持默认,如下图所示:9.配置使用终端,如下图所示:10.选择默认的pull行为,使用默认选项,如下图所示11.设置证书管理器,原创 2022-04-09 18:13:49 · 84 阅读 · 0 评论 -
Django--02django后台管理登录以及自定义项目创建
1.创建MySQL用户和数据库:共分三步:启动workbench、创建数据库、创建用户并授权1.1 进入windows服务页面,启动数据库服务1.2 启动workbench1.3创建数据库:auto_test_plt1.4进行字符集设置1.5 查看创建的数据库1.6 创建用户1.7给用户进行授权,先选中数据库,再授权1.8 检查设置的用户授权是否生效,重新建立一个数据库连接,如下图1.9 输入密码2.0 建立了新的链接2.创建Django项目:共分三步:进原创 2022-04-09 17:52:49 · 143 阅读 · 0 评论 -
Django--01django环境部署
1.检查操作系统和python版本1.1进入windows设置,查看系统版本1.2 进入关于,查看操作系统版本号1.3 进入控制面板检查是否已经安装了Python1.4 可以进入cmd,查看python版本建议如果不是3.8的版本,进行一下卸载,安装成3.8版本2.Python环境安装2.1 先卸载原有Python,如果没有安装,此步骤略过2.2 下载新版Python:下载地址:https://www.python.org/downloads/release/python-386原创 2022-04-09 17:51:09 · 118 阅读 · 0 评论