使用功能测试协助安装Django

本章节知识分为两部分
一是测试驱动开发(Test-Driven Development,TDD)的基础知识;
二是从零开始写一个Web的应用,并用Selenium进行功能测试和单元测试;
会使用到的Django进行Web应用开发,使用Git进行版本控制

但我们已经决定要开发一个网站。Web 开发的第一步通常是 安装和配置 Web 框架。下载这个,安装那个,配置那个,运行这个脚本……但是,使用 TDD 时要转换思维方式。做测试驱动开发时,你的心里要一直记着测试山羊,像山羊一样 专注,咩咩地叫着:“先测试,先测试!”
在 TDD 的过程中,第一步始终一样:编写测试。
首先要编写测试,然后运行,看是否和预期一样失败,只有失败了才能继续下一步——编 写应用程序。请模仿山羊的声调复述这个过程。我就是这么做的

测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完全部功能的开发。

本地Django框架搭好后,先进入虚拟空间

workon superlists

创建superlists/functional_tests.py,检查代码是否一致
注:代码编辑环境可以选择GitBash或者Pycharm,我是前者,需要注意的是,要找到你这段代码的路径

from selenium import webdriverbrowser = webdriver.Firefox()     #selenium调用浏览器
browser.get("http://localhost:8000")  # 访问地址assert 'Django' in browser.title    # 断言浏览器打开后是否有“Django”字段

有了这个Case后,我们现在需要编写功能测试,对代码进行测试
注意: 这里用到了Selenium 库一些方法,具体可以查看:https://blog.csdn.net/sevensolo/article/details/93410613


如果看到关于导入 Selenium 的错误,或者让你查找“geckodriver”错误,需要检查Selnium驱动得版本,我本地的版本是

Git bash中运行代码,会在本地打开浏览器,并且输入地址,提示“无法连接”,这里没有启动Django服务,后续还有很多类似的错误,先发现错误,再取解决错误

启动Django服务

启动Django创建项目

$ django-admin.py startproject superlists

Gitbash 里进入自己指定的目录,使用下面命令会自动创建文件夹,并会按目录创建以下子目录,结构如下:

进入项目根目录找到manage.py并启动

我们在superlists目录下,输入下面命令,运行开发服务器

 python manage.py runserver

Django 的开发服务器便在设备中运行起来了。让这个命令一直运行着,再打开一个命令行窗口(进入刚刚打开的文件夹),在其中再次运行测试:

新开一个窗口后,进入superlists目录,输入python functional_tests.py,启动火狐浏览器主页为空白页
手动输入:http://localhost:8000/
会显示下面,表示服务区正在运行

创建Git仓库

我们先把functional_tests.py 移到superlists 文件夹中

然后执行git init 命令,创建仓库并使用功能测试协助安装Django

$ ls
superlists functional_tests.py geckodriver.log
$ mv functional_tests.py superlists/
$ cd superlists
$ git init .
Initialised empty Git repository in /.../superlists/.git/:

将写好的functional_tests.py,移动到相应目录下后,执行初始化空的Git 仓库:
注意:$ git init .而不是$ git init. init和.之前有个空格

自此工作目录都是顶层superlists 文件夹
从现在起,我们会把顶层文件夹superlists 作为工作目录。
(简单起见,我在命令列表中都将使用/…/superlists/ 表示这个目录。但实际上,这个目录的真实地址可能是/home/kind-reader-username/my-python-projects/superlists/。)
我提供的输入命令都假定在这个目录中执行。同样,如果我提到一个文件的路径,也
是相对于这个顶层目录而言。因此,superlists/settings.py 是指次级文件夹superlists 中
的 settings.py。

根据书中提示,初始化后,后续所有操作都再顶层superlists 文件夹中

这里有一点很奇怪,按照作者的话,刚才将functional_tests.py从顶级superlists/目录下移动到superlists/superlists/次级目录下,但是下面还有其他操作,有点迷,我只好又移出来了 :)

初始化之后,我们看一下要提交的文件:

$ ls
db.sqlite3 manage.py superlists functional_tests.py

db.sqlite3 是数据库文件,无须纳入版本控制。前面见过的geckodriver.log 是Selenium 的日志文件,也无须跟踪变化。我们要把这两个文件添加到一个特殊的文件.gitignore 中,让Git 忽略它们:

# git提交时忽略db.sqlite3和geckodriver.log
$ echo "db.sqlite3" >> .gitignore
$ echo "geckodriver.log" >> .gitignore

接下来,我们可以添加当前文件夹(“.”)中的其他内容了:

$ git add .
$ git status

这里需要注意的是,我git add .时,报错如下,提示未初始化,我就git init .,重新初始化了以下,然后可以正常添加了

添加了很多.pyc 文件,这些文件没必要提交。将其从Git 中删掉,并添加到.gitignore 中:

现在,来看一下进展到哪里了。(你会看到,我使用git status 的次数太多了,所以经常会使用别名git status


开始做第一提交:

$ git add .gitignore
$ git commit

输入git commit 后,会弹出一个编辑器窗口,让你输入提交消息。

进入insert编辑输入First commit 后,:wq!保存退出,界面提交信息

Python 测试驱动开发读书笔记(一)使用功能测试协助安装Django相关推荐

  1. Python 测试驱动开发读书笔记(准备工作)安装软件

    知识不是靠一篇或者几篇博客就能掌握的,它从来都不是轻松的 当明白这个道理时,我静下心来选择了<Python测试驱动开发>来学习,目前还用不上,但是这本书是今年前半年的计划,新工作也比较忙, ...

  2. Python 测试驱动开发读书笔记(二)使用unittest框架扩展功能测试

    使用功能测试驱动开发一个最简可用的应用 上一节,我们启用了Django,并且用Selenium驱动浏览器,测试了本地地址http://127.0.0.1,因为只是启动了首页,并没有做任何的页面内容,所 ...

  3. Python 测试驱动开发读书笔记(三)使用单元测试测试简单的首页

    使用单元测试测试简单的首页 在上一章结尾,我们有一个简单的测试例子,但是这个例子执行是失败的 失败的原因是浏览器的首页标题不是To-Do,从这章开始编写这个应用 第一个Django应用,第一个单元测试 ...

  4. python测试驱动开发 中文版_GitHub - starryrbs/python_tdd: 使用Python测试驱动开发完成Django项目...

    我知道你会问:"你是谁,为什么要写这本书,我为什么要读这本书?" 我至今仍然处在编程事业的初期.人们说,不管从事什么工作,都要历经从新手到熟手的 过程,最终有可能成为大师.我要说的 ...

  5. python测试驱动开发_使用Python进行测试驱动开发的简单介绍

    python测试驱动开发 by Dmitry Rastorguev 德米特里·拉斯托格夫(Dmitry Rastorguev) 使用Python进行测试驱动开发的简单介绍 (A simple intr ...

  6. Python测试驱动开发(TDD)

    Python测试驱动开发(TDD) 前言:TDD是一种敏捷开发模式,而不是测试方法. 测试很难 --- 难在坚持,一直做下去. 现在花时间编写的测试不会立即显出功效,要等到很久以后才有作用 --- 或 ...

  7. python第三章上机实践_《机器学习Python实践》读书笔记-第三章

    <机器学习Python实践>,第三章,第一个机器学习项目 以往目录:橘猫吃不胖:<机器学习Python实践>读书笔记-第一章​zhuanlan.zhihu.com 书中介绍了一 ...

  8. 《python 程序设计》读书笔记

    <python 程序设计>读书笔记 笔者对于csdn博客的运用还是不太熟练,希望大家能够见谅.以后会不断提升写作的手法.这篇博客是我在学习python程序设计时候的笔记.我也是选择学习了大 ...

  9. 《简明Python教程》读书笔记

    <简明Python教程>读书笔记 开篇: 有两种方式构建软件设计:一种是把软件做得很简单以至于明显找不到缺陷,另一种是把它做得很复杂以至于找不到明显的缺陷. --C. AR. Hoare ...

最新文章

  1. 在CentOS 6.9 x86_64搭建Lua开发环境
  2. QueryString的用法
  3. YYAsyncLayer 学习
  4. html打地鼠游戏设计报告,有趣的Axure案例:打地鼠游戏的设计
  5. C#几种访问修饰符理解
  6. python 闭包(closure)
  7. 流浪的python博客园_python学习心得第一章
  8. 决不允许AI杀人武器研发!马斯克领衔2400名科学家签署联名宣言
  9. 遍历矩阵每一行穷举_六十三---矩阵中的路径
  10. wpf之StackPanel布局
  11. JAVA中抓异常的办法
  12. dubbo服务层面上的负载均衡和高可用
  13. Unity中文乱码的解决方法
  14. 【人工智能项目】深度学习实现图像多标签分类
  15. 三极管共射放大电路调试
  16. VBA dialogs 调用对话框
  17. Dominant Indices
  18. 【Unity3D开发小游戏】Unity3D零基础一步一步教你制作跑酷类游戏
  19. 使用certbot-auto脚本安装Certbot 生成https证书
  20. 领英不能加人怎么办?

热门文章

  1. 听说这样可以加快oracle入表速度
  2. 随想录(英语学习的几个误区)
  3. 随想录(编写用户侧定时器)
  4. django xadmin 默认密码_Django的认证系统
  5. python 报文解析_python解析DNS数据包实例代码
  6. 华为fusionsphere整体架构及其各组件功能_华为数据之道:面向业务的信息架构建设...
  7. windows server搭建php mysql数据库_windows server 2008/2012安装php iis7 mysql环境搭建教程...
  8. html页面 sql注入,使用html仅阻止SQL注入
  9. windows 找不到本地配置文件用临时配置文件让您登录
  10. 加密保护软件 WinLicense常见问题整理大全(四)