Django学习系列9:接着修改首页
现在的功能测试还是失败的,继续修改代码,让其通过。因为HTML现在保存在模板中,可以尽情修改,无需编写额外的单元测试。我们需要一个<h1>元素
修改:lists/templates/home.html
<html>
<head>
<title>To-Do lists</title>
</head>>
<body>
<h1>Your To-Do list</h1>
</body>>
</html>
功能测试(前提需要先运行服务器 # python manage.py runserver)
报错:element: [id="id_new_item]
继续修改
<html>
<head>
<title>To-Do lists</title>
<input id="id_new_item" />
</head>>
<body>
<h1>Your To-Do list</h1>
</body>>
</html>
And now?
AssertionError: '' != 'Enter a to-do item'
加上占位文字
<input id="id_new_item" placeholder="Enter a to-do item"/>
运行得到下面错误
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="id_list_table"]
因此要在页面中加入表格,目前表格是空的
<input id="id_new_item" placeholder="Enter a to-do item"/>
<table id="id_list_table"></table>
</body>
现在的功能测试如何:
any(row.text == '1: Buy peacock feathers' for row in rows) #
AssertionError: False is not true
原来是assertTrue,因为没有给他提出明确的失败消息,可以把自定义的错误消息传给unittest中的大多数assertx方法
self.assertTrue(
any(row.text == '1: Buy peacock feathers' for row in rows), #
"New to-do item did not appear in table"
)
再次运行功能测试,应该会看到我们编写的消息:
AssertionError: False is not true : New to-do item did not appear in table
现在想让测试通过,就要真正处理用户提交的表单,后续在讨论
这里提交一下
git diff
git commit -am "Front page HTML now generated from a template--现在从模板生成的首页html"
小结:TDD流程
前面我们见识了测试驱动开发流程中涉及的所有主要概念
- 功能测试
- 单元测试
- “单元测试/编写代码”循环
- 重构
流程图,能清楚地表明流程中的循环

如果既有单元测试又有功能测试,TDD流程如下

功能测试是应用是否正常运行的最终评判,单元测试只是整个开发过程中的一个辅助工具。
Django学习系列9:接着修改首页的更多相关文章
- Django学习系列之Form基础
Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...
- Django学习系列6:使用selenium测试用户交互
学习系列5中的单元测试有报错信息,这儿来编写functional_tests.py文件,扩充其中的功能测试 # File: functional_test.py # Author: Rxf # Cre ...
- [python][django学习篇][10]再次修改博客首页模板
目前我们看到的只是模板中预先填充的一些数据,我们得让它显示从数据库中获取的文章数据.下面来稍微改造一下模板: 删除所有article标签,然后添加以下内容,将从数据库读取到的内容填充到模板变量{{ p ...
- django学习系列——python和php对比
python 和 php 我都是使用过,这里不想做一个非常理性的分析,只是根据自己的经验谈一下感想. 在web开发方面,无疑 php 更甚一筹. 从某种角度来说,php 就是专门为 web 定制的语言 ...
- Django学习系列之Python+Xadmin
项目树 引入xadmin pycharm在项目中创建存放xadmin的目录 右键项目名称-->pythonpackage-->输入名称:extra_app 拷贝xadmin代码到extra ...
- Django学习系列17:在模板中渲染待办事项
前面提到的问题中在表格中显示多个待办事项 是最后一个容易解决的问题.要编写一个新单元测试,检查模板是否也能显示多个待办事项: lists/tests.py def test_displays_all_ ...
- Django学习系列16:处理完POST请求后重定向
处理完POST请求后重定向 代码中new_item_text = ''的写法不怎么样.解决第二个问题时候,顺带把这个问题也解决了. 人们都说处理完post请求后一定要重定向,接下来就实现这个功能吧.修 ...
- Django学习系列15:把POST请求中的数据存入数据库
要修改针对首页中的POST请求的测试.希望视图把新添加的待办事项存入数据库,而不是直接传给响应. 为了测试这个操作,要在现有的测试方法test_can_save_a_post_request中添加3行 ...
- Django学习系列11:在服务器中处理POST请求
之前的代码还没有为表单指定action=属性,因此提交表单默认返回之前渲染的页面,即“/”,这个由视图函数home_page处理.下面修改这个视图函数,让它能处理POST请求. 这意味着要为视图函数h ...
随机推荐
- 《Javascript 语言精粹》 中 用到的一些代码 (1)
var isNumber = function isNumber(value){ return typeof value === 'number' && isFinite(value) ...
- SqlServer:SqlServer(存储过程动态表查询(取消返回值),事务处理,批量还原sqlserver备份,强制删除被占用的数据库)
1.存储过程动态表查询 USE [NETWORKING_AUDIT] GO /****** Object: StoredProcedure [dbo].[impConfigInfo] Script D ...
- 实验一 part2
#include <stdio.h> int main () { int x; printf("输入一个整数:\n"); scanf("%d",&a ...
- 使用gRPC打造服务间通信基础设施
一.什么是RPC rpc(远程过程调用)是一个古老而新颖的名词,他几乎与http协议同时或更早诞生,也是互联网数据传输过程中非常重要的传输机制. 利用这种传输机制,不同进程(或服务)间像调用本地进程中 ...
- 史上最简单的CentOS7破解密码方法,有图有真相
#############破解CentOS7密码详细过程 一.开机重启,按任意键停住,有时没停住,是鼠标键未在服务器中,点一下就好 二.按e键进入单用户模式 三.在UTF-8后面加上i ...
- CentOS 7 安装java 环境
1.创建安装目录 mkdir /usr/local/java/ 2.将下载的安装包 上传到 安装目录 (可用Xftp 上传) 3.解压 tar -xzvf jdk-8u221-linux-x64. ...
- 1 初识数据库操作 1 MySQL 数据库
1 数据类型与表的管理 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 常见数据库:Oracle.DB2.SQL Server.Postgre SQL.MySQL. 1.1 相 ...
- 【VS开发】【DSP开发】浅谈Linux PCI设备驱动(二)
我们在 浅谈Linux PCI设备驱动(一)中(以下简称 浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的.后面我们会举个例子来说明Linux PCI设 ...
- Vue 项目结构介绍
Vue 项目创建完成后,使用 Web Storm 打开项目,项目目录如下: build 文件夹,用来存放项目构建脚本 config 中存放项目的一些基本配置信息,最常用的就是端口转发 node_mod ...
- s7-200日常使用烂笔头
这篇文章只是记录我的苦逼自控之路,有些是书上的,有些是自己发现的,不记载网上得出来的一些东西.只为强化记忆以及便于翻阅. 1.今天使用PC\PPI cable线缆连接成功了200,这个线是盗版线,之前 ...