目前进度
第6章的内容比较长,所以拆分成了若干个小节说明,以下为当前进度:
确保功能测试之间相互隔离
解决页面刷新延迟
使用TDD 实现新设计
逐步迭代,实现新设计
使用Django测试客户端一起测试视图、模板和URL
用于添加待办事项的URL和视图
调整模型
每个列表都应该有自己的URL
还需要一个视图,把待办事项加入现有清单

(html comment removed: more)
内容介绍
- 把代办事项加入现有清单
- 先写测试项
- 检查正则表达试
- 更新正则表达式
- 最后的新路由
- 再次更新视图
- 测试修改成果
- 按照设计调整new_list视图
- 配置重定向
- 配置试图提交
把代办事项加入现有清单
给新增事项用的视图
先写测试项
vi lists/tests.py

测试能否保存内容并跳转到新页面
检查正则表达试
测试一下,应该会有404出现
python manage.py test lists
#
AssertionError: 301 != 302 : Response didn t redirect as expected: Response
code was 301 (expected 302)
还没有设置URL,应该是404,为什么会301呢
查看一下URL的配置
vi superlists/urls.py
url(r'^lists/(.+)/$', views.view_list, name='view_list'),
正则表达式的范围太大了
更新正则表达式
把URL传入视图
vi superlists/urls.py

更新正则表达式,只匹配数字
继续测试
python manage.py test lists
#
AssertionError: 404 != 302 : Response didn t redirect as expected: Response
code was 404 (expected 302)
符合期望值,测试成功
最后的新路由
定义新路由用于新增项目
vi superlists/urls.py

再次更新视图
再次测试, 报错有了变化
python manage.py test lists
#
AttributeError: module 'lists.views' has no attribute 'add_item'
添加视图
vi lists/views.py
def add_item(request):
pass
报错
python manage.py test lists
#
TypeError: add_item() takes 1 positional argument but 2 were given
测试修改成果
再测试一下
vi lists/views.py
def add_item(request, list_id):
pass
报错
python manage.py test lists
#
ValueError: The view lists.views.add_item didn t return an HttpResponse object.
按照设计调整new_list视图
修改测试
def add_item(request, list_id):
pass
报错
python manage.py test lists
#
self.assertEqual(Item.objects.count(), 1)
AssertionError: 0 != 1
配置重定向
vi lists/views.py
重定向到有效地址

配置试图提交
再次测试
python manage.py test lists
#
self.assertEqual(Item.objects.count(), 1)
AssertionError: 0 != 1
vi lists/views.py

补充上提交语句,测试通过
预告
今天的内容也差不多了,下次会再调整一下视图文件,敬请期待
时间过的飞快,下节再见
