zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    HDU4611+数学
    HDU4612+Tarjan缩点+BFS求树的直径
    HDU4602+推导公式
    HDU4607+BFS
    HDU1353+贪心
    HDU4545+LCS
    HDU4548+素数
    HDU4539+状态压缩DP
    HDU2110+母函数
    HDU1569+最大点权集
  • 原文地址:https://www.cnblogs.com/LuoboLiam/p/11695970.html
Copyright © 2011-2022 走看看