【Django】Django项目结构与单元测试
学校的软工项目要开发一个网站,自然的想到用python+Django来做。由于之前没有用Django开发过大型的网站项目,所以遇到了一些问题。记录在此,便于以后查阅。
今天完成了项目结构的设计、部分的单元测试以及把代码使用策略模式重构。
项目结构
使用app完成功能
首先要明确网站基本的功能实现是要用各种各样的app来实现的,我觉得这样的优点有几点:
功能划分明确,之后修改方便。
因为有多个models,所以可以针对不同的功能设计数据库,也是为了功能逻辑之间的划分。
多个test可以更有针对性的进行测试
具体的python代码:django-admin startapp <app_name>。
app的具体位置
因为之前看过一本16堂课学会Django架站的书,上面的提到将app放到项目文件夹下,我觉得这样不够好,因为会导致app文件夹可能与templates或static文件夹搞混的情况,同样也不是很好看;所以我这次使用了一个apps文件夹存放所有的app。
QuerySet的具体使用
这里记录一下objects的使用,链接
Django单元测试
啊这个也踩了一些坑,不过挺浅的。。。Django的单元测试是基于django.test.TestCase这个类(继承unittest类)实现的。
具体步骤
首先编写测试类,测试类是继承TestCase类的,之后重载setUp方法,做一些测试的准备操作,我测试的是models中的数据表以及操作方法,因此import model中的各种类;然后就是编写测试方法了,我是一个一个个方法测试的,每个方法写几个test case,保证所有的分支都被覆盖。
写好了代码我发现了一个重要的问题,我不知道咋运行QAQ,求助度娘发现要用这个命令:
python manage.py test <module_name>
e.g.
python manage.py test apps.signin.tests
Django会自动地执行相应模块的所有tests。
那么做完unittest自然就想到要得到代码覆盖率,这里使用一个coverage的工具,要自己安装。
代码:(cmd)pip install coverage

图片来自这篇博客
这样就得到了代码覆盖率。
策略模式重构
把用户行为和用户本身剥离开,来避免一些内聚和耦合。由于当前项目很小,重构起来不费什么劲。。。忙活了一晚上,好像也没干啥QAQ
【Django】Django项目结构与单元测试的更多相关文章
- django开发个人简易Blog——构建项目结构
开发之前第一步,就是构造整个的项目结构.这就好比作一幅画,第一步就是描绘轮廓,有了轮廓,剩下的就是慢慢的填充细节.项目结构规划如下图: 项目结构描述: 本项目以fengzhengBlog为根目录. a ...
- Django官方为什么没有标准项目结构
Django官方并没有提供标准的项目结构,于是网上众说纷纭,百花齐放,一千个读者有一千个哈姆雷特.那我们该怎么设计项目结构呢?在回答这个问题之前,先了解一下Django原生的目录和文件都是干嘛的. p ...
- 1.-Django项目结构
一.Django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式,即模型M,视图V和模版T. Django基本组件: 1.基本配置文件/路由系统 2. ...
- Django工程目录结构优化
1.我看到这篇文章,写的不错,在此复制了一份,防止以后找不到! 感谢作者的翻译--->原文的链接:http://www.loonapp.com/blog/11/ 如果原文存在,请打开原文件阅读 ...
- django创建项目
django创建项目 安装django pip install django==1.9 Note: C:\Python34\Scripts\pip.exe 创建项目 django-admin star ...
- Django 创建项目流程
django 项目创建流程 1 创建项目 cmd django-admin startproject 项目名称 pycharm file -- new project -- Django -- 项目名 ...
- Django商城项目笔记No.6用户部分-注册接口-短信验证码实现celery异步
Django商城项目笔记No.4用户部分-注册接口-短信验证码实现celery异步 接上一篇,如何解决前后端请求跨域问题? 首先想一下,为什么图片验证码请求的也是后端的api.meiduo.site: ...
- Django入门项目实践(上)
项目结构 1.建立项目 File -->> New Project... 第一个Location是项目所在的目录,第二个Location是项目独立的Python运行环境,我们称之为Virt ...
- django 初始化项目 和modelviewset 使用
django初始化项目 1.初始化项目结构└─shiyanlou_project │ .gitignore│ README.en.md # 英文│ README.md # 中文项目简介│├─celer ...
随机推荐
- unity 用LineRender画四边形并测面积
作为一个菜鸡,这个高中数学题差不多废了我两个上午...好了,废话不多说,直接上代码... using System.Collections.Generic; using UnityEngine; pu ...
- day 07 预科
目录 异常处理 字符串内置方法 1.索引取值 2.切片 3.成员运算 4.for循环 5.len() 6.strip(): 默认去掉两端空格 7.lsteip()/rstrip(): 去左端/右端 空 ...
- Vue+Django项目部署
本地项目配置 1 复制 luffy/settings/dev.py为prop.py 修改luffy/settings/prop.py中以下几项 (1) allow_hosts ALLOWED_HOST ...
- <choose><when><if>
--说明:choose类似于switch,其中的when如果不符合则进入otherwise(类似于default),可以结合if标签使用. -- <select> -- SELECT * ...
- Linux命令——chattr、lsattr
简介 chattr用于设置文件隐藏属性,lsattr用于查看文件隐藏属性.隐藏属性对系统很有用,尤其是系统安全这一块.但是这两个命令只能在Ext2/Ext3上面有用,其他文件系统可能不支持. chat ...
- C语言基础知识-数组和字符串
C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...
- PAT甲级1010踩坑记录(二分查找)——10测试点未过待更新
题目分析: 首先这题有很多的坑点,我在写完之后依旧还有第10个测试点没有通过,而且代码写的不优美比较冗长勿喷,本篇博客用于记录写这道题的一些注意点 1.关于两个不同进制的数比大小一般采用将两个数都转化 ...
- 有意义的单词分割——经典dfs题目
680. 分割字符串 中文 English 给一个字符串,你可以选择在一个字符或两个相邻字符之后拆分字符串,使字符串由仅一个字符或两个字符组成,输出所有可能的结果 样例 样例1 输入: "1 ...
- anyproxy学习3-修改返回内容(beforeSendResponse)
前言 fiddler可以抓包打断点后,修改返回的内容,便于模拟各种返回结果.anyproxy也可以通过写rule模块规则,模拟返回状态码.头部.body beforeSendResponse befo ...
- 10、Python迭代器与生成器(iterator、for循环、generator、yield)
一.迭代器(foreach) 1.可迭代的对象 内置有__iter__方法的都叫可迭代的对象. Python内置str.list.tuple.dict.set.file都是可迭代对象. x = 1._ ...