Django鼓励以应用的形式组织代码。这样一个项目中可以放多个应用

为待办事项清单创建第一个应用:

manage.py startapp Lists

会在superList文件夹中创建子文件夹Lists,并在lists中创建一些占位文件,用来保存模型,视图以及测试。

功能测试站在用户的角度从外部测试应用,单元测试站在程序员的角度从内部测试应用。

TDD同时使用这两种类型测试应用,工作流程:

1.先写功能测试,从用户角度描述应用的新功能。

2. 功能测试失败后,想办法编写代码让它通过。(或者至少让当前失败的测试通过)。此时,使用一个或多个单元测试定义希望代码实现的效果。保证为应用中的每一行代码(至少)编写一个单元测试。

3. 单元测试失败后,编写最少量的应用代码,刚好让单元测试通过。有时要在第2步和第3步之间多次往复,直到我们觉得功能测试有一点进展为止

4. 再次运行功能测试,看能否通过,或者有没有一点进展。这一步可能促使我们编写一些新的单元测试和代码等。

整个过程中,功能测试站在高层驱动开发,而单元测试从底层驱动我们做些什么。

功能测试的作用是帮助你开发具有所需功能的应用,还能保证你不会无意中破坏这些功能。单元测试的作用是帮助你编写简洁无措的代码。

Django 有自己专用的,写unit test的类  from django.test import TestCase

TDD x循环要从失败的测试开始,然后编写代码让其通过。

Django中的MVC,URL 和视图函数.

视图更像是控制器,模板才是视图。

其主要任务是决定用户访问网站中的某个URL时做些什么。

Django 的工作流程:

1. 针对某个URL的HTTP请求进入

2. Django使用一些规则决定由哪个视图函数处理这个请求 (这一步叫做 解析URL)

3. 选中的视图函数处理请求,然后返回HTTP响应。

先测试两件事:

1. 能否解析网站根路径 (“/"), 将其对应到我们编写的某个视图函数上

from django.core.urlresolvers impor resolve

found = resolve("/") #解析 url,并将其映射到相应的视图函数上

# TDD 目前没有响应的视图函数。根据TDD失败,在应用的视图文件中定义视图函数.

2. 能否让视图函数返回一些HTML

#TDD 定义的视图函数要返回 HTML 给request

运行测试,根据TDD定义 视图函数。运行测试,发现404 error.说明 没有相应的URL映射。

project的文件夹下的urls,py 中定义如何把URL映射到视图函数上。这个文件应用于整个网站.

from django.conf.urls import url,patterns,include

三种加url的例子。Django urls.py 文件中自带的事例。URL 文件中,每个url 都需要对应的视图处理函数

Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))

为视图编写测试函数:

需要定义一个函数,向浏览器返回真正的HTML响应.

给视图函数输入一个request, 返回response. 然后检查response.content的内容。对比response.content的内容时,主要使用 b"xxx".因为response.content是原始字节。

from django.http import HttpRequest

通过单元测试,一步步进行,视图函数需要返回response object

from django.http import HttpResponse

def home_page(request):

return HttpResponse(xxx)

回顾:

创建新应用 : manage.py startapp appname

Django 单元测试运行程序: from django.test import TestCase

功能测试和单元测试的区别: 用户和程序员

Django 解析URL 的方法, urls.py 文件的作用. : url(pattern,view,name)

Django 的视图函数,请求和响应对象。 HttpRequest,HttpResponse

如何返回简单的HTML    return HttpResponse(xxx)

有用的命令和概念:

python manage.py runserver

python functional_test.py 运行功能测试

python manage.py test 运行单元测试

单元测试/编写代码 循环:

a, 在终端里运行单元测试

b,在编辑器中改动最少量的代码

c,重复上两步

转载于:https://www.cnblogs.com/ahMay/p/8491329.html

使用单元测试测试简单的首页相关推荐

  1. Python 测试驱动开发读书笔记(三)使用单元测试测试简单的首页

    使用单元测试测试简单的首页 在上一章结尾,我们有一个简单的测试例子,但是这个例子执行是失败的 失败的原因是浏览器的首页标题不是To-Do,从这章开始编写这个应用 第一个Django应用,第一个单元测试 ...

  2. 第三章 使用单元测试测试简单的首页

    3.1第一个Django应用,第一个单元测试 python3 manage.py startapp lists 创建一个应用 功能测试站在用户的角度从外部测试应用,而单元测试从程序员的角度从内部测试应 ...

  3. python简单单元测试示范卷_Python 单元测试的简单示例

    这篇文章主要为大家详细介绍了Python 单元测试的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 以前我是不 ...

  4. 单元测试编写_为什么要编写单元测试-测试技巧8

    单元测试编写 我对最近的博客"您应该测试什么"有很多React,有些人出于各种原因与我达成一致,另一些人则认为建议某些类可能不需要单元测试是完全危险的. 已经处理了什么测试,今天的 ...

  5. 为什么要编写单元测试–测试技巧8

    我对最近在"您应该测试什么"上的博客有很多反应,有些人出于各种原因同意我的想法,另一些人则认为建议某些类可能不需要单元测试是非常危险的. 已经处理了什么测试,今天的博客涉及为什么要 ...

  6. 使用模拟的单元测试–测试技术5

    我的最后一个博客是有关测试代码方法的一系列博客中的第四篇,演示了如何创建使用存根对象隔离测试对象的单元测试. 今天的博客探讨了有时被视为对立的技术:使用模拟对象进行单元测试. 同样,我使用了从数据库检 ...

  7. 单元测试 php,PHP单元测试PHPUnit简单用法示例

    本文实例讲述了PHP单元测试PHPUnit简单用法.分享给大家供大家参考,具体如下: windows开发环境下,PHP使用单元测试可以使用PHPUnit. 安装 首先下载PHPUnit,官网:http ...

  8. Asp.net MVC 仿照博客园的简单网站首页 列表设计

    本来我打算采用ajax提交请求,异步的请求获取数据,但是我发现如果这样的话就会拖慢开发的进度,拖长时间.所以在这篇博客中仿照首页的列表设计其实和左侧列表网站分类采用了同样的方式,通过局部视图的方式呈现 ...

  9. ROS入门笔记(十一):编写与测试简单的Service和Client (Python)

    ROS入门笔记(十一):编写与测试简单的Service和Client (Python) 文章目录 01 导读 02 功能包的创建 03 在功能包中创建自定义服务类型 3.1 定义srv文件 3.2 在 ...

最新文章

  1. Python基础笔记1
  2. python使用函数的优点-Python函数的特点
  3. 重建DC的DNS区域
  4. 说说初用 Mock 工具测试碰到的坑
  5. Tkinter模块常用参数(python3)
  6. java list clear 垃圾回收_list.clear()vs list = new ArrayList Integer(); [重复]
  7. struts-config.xml 简述
  8. Sublime个性化配置
  9. 你知道谷歌有个社区叫 GBG 么?
  10. Matlab打开prn文件,打印prn文件的方法和技巧,.prn用什么软件打开?
  11. 百度网盘下载加速器--ENFI下载器、Speedkoala、PanDownload、SpeedPan
  12. 极点五笔烦人的几个快捷键.
  13. 《阿里巴巴大数据实践-大数据之路》读后感言
  14. EditText 去掉下划线,但是不丢失光标
  15. LabVIEW编程LabVIEW控制PXI-5122例程与相关资料
  16. 个人空间岁末大回报活动12月16日获奖名单
  17. EXCEL技术VBA一键获取SAP系统数据
  18. opencv手势识别(3_SVM算法识别)
  19. 爱普生Epson Stylus Photo T60 打印机驱动
  20. 基于深度学习的花卉检测与识别系统(YOLOv5清新界面版,Python代码)

热门文章

  1. boost::geometry:::detail::overlay::get_clusters用法的测试程序
  2. boost::fusion::repetitive_view用法的测试程序
  3. boost::dynamic_bitset模块实现ambiguous set的测试程序
  4. GDCM:DICOM转储到SQLITE3的测试程序
  5. boost::contract模块实现circle的测试程序
  6. ITK:两幅图像之差的绝对值
  7. VTK:Filtering之PerlinNoise
  8. OpenCV delaunay三角剖分和voronoi镶嵌的实例(附完整代码)
  9. 在D-Bus适配器中声明信号
  10. Qt Creator共享项目设置