【Django】Django项目结构与单元测试

学校的软工项目要开发一个网站,自然的想到用python+Django来做。由于之前没有用Django开发过大型的网站项目,所以遇到了一些问题。记录在此,便于以后查阅。

今天完成了项目结构的设计、部分的单元测试以及把代码使用策略模式重构。

项目结构

使用app完成功能

首先要明确网站基本的功能实现是要用各种各样的app来实现的,我觉得这样的优点有几点:

  1. 功能划分明确,之后修改方便。

  2. 因为有多个models,所以可以针对不同的功能设计数据库,也是为了功能逻辑之间的划分。

  3. 多个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

posted @ 2019-10-18 00:43  xinze  阅读(312)  评论(0编辑  收藏  举报