1. 测试驱动开发
想要做什么,写成一个一个的用户故事。故事的内容 尽量是语言能够表达的用户操作的每一步.
比如: 打开网页,输入网址,看到什么元素,元素中有什么内容。要给该元素输入什么,Enter之后期望得到什么。关闭网页等。
功能测试,可以用 Django提供的 LiveServerTestCase,这样就省去了每次测试完后需要清数据库的麻烦。
2. 单元测试驱动功能开发
功能测试完成后,进行的每一步开发,都要有单元测试的跟踪。单元测试是从程序员的角度考虑问题的。所以单元测试测试的着重点是 每个页面的视图函数的后台功能测试。比如能解析首页url了。首页的输入应该在数据库中创建什么了。数据之间的关系了。等等。
单元测试中,主要用到了很多Django API操作。数据库操作。建议使用的是 Django提供的 (from django.test import )TestCase.已经测试客户端. self.client. get,self.client.post 可以模仿浏览器发请求。得到的response是render之前的response上下文。template中的变量都在其中。
3. url 整理。
建议每个应用都有自己的url。然后在project的url文件中进行include。便于管理
4. get 到的新技能和api
from django.core.urlresolvers import resolve
from django.test import TestCase
from django.http import HttpRequest
from django.template.loader import render_to_string
found = resolve("/") # 返回的是视图函数
self.assertEqual(found.func,home_page)
render_to_string(‘home_page.html‘,request=request) #将一个template render成 string
测试客户端返回的response 可以
self.assertRedirects(response,‘/Lists/%d/‘ %(correct_list.id,))
template for
{% for new_item_text in list.item_set.all %}
<tr><td>{{ forloop.counter}}: {{new_item_text.text}}</td></tr>
{% endfor %}