【有书共读15】Python测试驱动开发 读书笔记05

Django中的MVC、URL和视图函数

Django 遵守了经典的模型 - 视图 - 控制器(Model-View-Controller,MVC)模式,但并没严格遵守。
Django 确实有模型,但视图更像是控制器,模板其实才是视图。不过,MVC 的思想还在。

Django 的工作流程有点儿类似下述过程。
(1) 针对某个 URL 的 HTTP 请求进入。
(2) Django 使用一些规则决定由哪个视图函数处理这个请求。
(3) 选中的视图函数处理请求,然后返回 HTTP 响应。

测试两件事。

  • 能否解析网站根路径(“/”)的 URL,将其对应到我们编写的某个视图函数上?
  • 能否让视图函数返回一些 HTML,让功能测试通过?


终于可以编写一些应用代码了

from django.shortcuts import render
# 在这里编写视图
home_page = None

❶ 首先应该查看错误本身。有时你只需查看这一处,就能立即找出问题所在。但某些时候,比如这个例子,原因就不是那么明显。

❷ 接下来要确认哪个测试失败了。是刚才编写按预期会失败的那个测试吗?在这个例子中,就是这个测试。

❸ 然后查看导致失败的测试代码。要从调用跟踪的顶部往下看,找出错误发生在哪个测试文件中哪个测试函数的哪一行代码。在这个例子中,错误发生在调用 resolve 函数解析“/”的那一行代码。


urls.py

测试表明,需要一个 URL 映射。Django 用 urls.py 文件把 URL 映射到视图函数上。在文件夹 superlists/superlists 中有个主 urls.py 文件,这个文件应用于整个网站

"""superlists URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
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'))
"""
from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]

修改内容
from django.shortcuts import render
# 在这里编写视图
def home_page():
    pass

测试
$ python manage.py test
Creating test database for alias 'default'...
.
 ---------------------------------------------------------------------
Ran 1 test in 0.003s

OK
System check identified no issues (0 silenced).
Destroying test database for alias 'default'...

第一个测试终于通过了!

提交一下~
$ git diff # 会显示urls.py、tests.py和views.py中的变动
$ git commit -am "First unit test and url mapping, dummy view"







#Python##读书笔记##测试##笔记#
全部评论

相关推荐

我见java多妩媚:大外包
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务