第 18 章 完成My Lists页面:由外而内的TDD
第 18 章 完成 "My Lists" 页面:由外而内的 TDD
18.1 对立技术:“由内而外”
18.2 为什么选择使用 “由外而内”
18.3 "My Lists" 页面的功能测试
# functional_tests/test_my_lists.py
def test_logged_in_users_lists_are_saved_as_my_lists(self):
email = "edith@mockmyid.com" # 这个邮箱成功了, 我自己的邮箱好像还要密码所以就失败了?
self.browser.get(self.server_url)
self.wait_to_be_logged_out(email)
# Y 是已登录用户
self.create_pre_authenticated_session(email)
# self.browser.get(self.server_url)
# self.wait_to_be_logged_in(email)
# 她访问首页,新建一个清单
self.browser.get(self.server_url)
self.get_item_input_box().send_keys("Reticulate splines\n")
self.get_item_input_box().send_keys("Immanentize eschaton\n")
first_list_url = self.browser.current_url
# 她第一次看到 My Lists 链接
self.browser.find_element_by_link_text("My Lists").click()
# 她看到这个页面中有她创建的清单
# 而且清单根据第一个待办事项命名
self.browser.find_element_by_link_text("Reticulate splines").click()
self.assertEqual(self.browser.current_url, first_list_url)
# 她决定再建一个清单试试
self.browser.get(self.server_url)
self.get_item_input_box().send_keys("Click cows\n")
second_list_url = self.browser.current_url
# 在 My Lists 页面,这个新建的清单也显示出来了
self.browser.find_element_by_link_text("My Lists").click()
self.browser.find_element_by_link_text("Click cows").click()
self.assertEqual(self.browser.current_url, second_list_url)
# 她退出后, My Lists 链接不见了
self.browser.find_element_by_id("id_logout").click()
self.assertEqual(self.browser.find_elements_by_link_text("My Lists"), [])18.4 外层:表现层和模板
18.5 下移一层到视图函数(控制器)
18.6 使用由外而内技术,再让一个测试通过
18.6.1 快速重组模板的继承层级
18.6.2 使用模板设计 API
18.6.3 移到下一层:视图向模板中传入什么
18.7 视图层的下一个需求:新建清单时应该记录属主
抉择时刻:测试失败时是否要移入下一层
18.8 下移到模型层
最后一步:实现模板需要的 .name 属性
.name 属性
Python 中的@property修饰器
由外而内的 TDD
Last updated