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, 重复上两步
来源: http://www.bubuko.com/infodetail-2517902.html