• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 详尽讲述用Python的Django框架测试驱动开发的教程

详尽讲述用Python的Django框架测试驱动开发的教程

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了django框架,python django框架,django框架介绍,python.django,django教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

测试驱动开发(TDD)是一个迭代的开发周期,强调编写实际代码之前编写自动化测试。

这个过程很简单:

  1.     先编写测试。
  2.     查看测试失败的地方
  3.     编写足够的代码以使测试通过。
  4.     再次测试。
  5.     代码重构 。
  6.     重复以上操作。

2015422121310993.png (407×401)

为什么要用TDD?

使用TDD,你将学会把你的代码拆分成符合逻辑的,简单易懂的片段,这有助于确保代码的正确性。

这一点非常重要,因为做到下面这些事情是非常困难的:

  •     在我们的脑中一次性处理所有复杂的问题。
  •     了解何时从哪里开始着手解决问题。
  •     在代码库的复杂度不断增长的同时不引入错误和bug;并且
  •     辨别出代码在什么时候发生了问题。

TDD帮助我们定位问题。它不能保证你的代码完全没有错误;然而,你可以写出更好的代码,从而能更好地理解理解代码。这本身有助于消除错误,并且至少,你可以更容易的定位错误。

TTD实际上也是一种行业标准。

说的够多了。让我们来看看代码吧。

在这个教程里,我们将创建一个存储用户联系人的app。

请注意: 这篇教程假设你运行在一个基于Unix的环境里 - 例如, Mac OSX, Linux, 或者在Windows下的Linux VM。 我将使用Sublime 2作为文本编辑器。并且,确保你已经完成了官方的Django教程并且基本了解Python语言. 此外,在这个第一篇post里,我们不会涉及到Django1.6提供的新工具。这篇文章将为之后的post打好基础来处理不同形式的测试。

第一个测试

在开始做一些事情之前,我们需要首先创建一个测试。为了这个测试,我们需要让Django正确安装。为此我们将使用一个函数测试——这在下面会详细解释。

    创建一个新目录存放你的项目:
   

  $ mkdir django-tdd
  $ cd django-tdd
</div>

    再建立一个目录存放函数测试
 
     

  $ mkdir ft
  $ cd ft
</div>

    创建一个新文件 "tests.py"并加入以下代码:
 

  from selenium import webdriver
   
  browser = webdriver.Firefox()browser.get('http://localhost:8000/')body = browser.find_element_by_tag_name('body')assert 'Django' in body.text
   
  browser.quit()
</div>

    现在运行测试:
   

  $ python tests.py
</div>

        确认安装selenium(译注:自动化测试软件)时是使用 installed -pip安装的

    你将看到 FireFox弹出来试图打开 http://localhost:8000/。在你的终端上面你会看到:
   
  

 Traceback (most recent call last):File "tests.py", line 7, in <module>assert 'Django' in body.textAssertionError
</div>

    祝贺!你完成了第一个失效测试。

    现在我们写足够的代码来让它通过,这些代码量约相当于设置一个 Django 开发环境。


设置Django

1. 激活一个virtualenv:
 

$ cd ..
$ virtualenv --no-site-packages env
$ source env/bin/activate
</div>

2. 安装Django并且建立一个项目
 

$ pip install django==1.6.1$ django-admin.py startproject contacts
</div>

你当前的项目结构应该是下面这个样子:

  ├── contacts
│   ├── contacts
│   │   ├── __init__.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   └── manage.py
└── ft   
    └── tests.py</div>

3. 安装 Selenium:
 

pip install selenium==2.39.0
</div>

4. 运行server
 

$ cd contacts
$ python manage.py runserver
</div>

5. 接着,打开一个新终端窗口,定位到"ft"文件夹下,再运行一次测试:
 
$ python tests.py

你将看到FireFox又一次窗口导航到了http://localhost:8000/。这次应该没有错误了。你刚刚已经通过了你的第一个测试!现在,让我们完成环境设置。

6. 版本控制,首先添加一个".gitignore"并且在里面添加下面的代码:
  .Pythonenv
bin
lib
include.DS_Store.pyc</div>

现在来创建一个Git仓库然后提交吧

$ git init
$ git add .$ git commit -am "initial"
</div>

7. 项目建完了,现在我们回头讨论一下功能测试吧。

功能测试

我们通过用 Selenium 来进行第一次测试。这样的测试会使我们使用web浏览器就像我们是最终用户一样,来看看应用程序实际上是怎么运行的。因为这些测试是遵循最终用户的行为习惯——也可以说是用户用例——这个包含了对一系列产品特点进行测试,而不仅仅对单一功能进行测试——这种更适合单元测试。有一点非常需要注意的是,当这部分测试代码你还没开始写,那么你必须先从功能测试开始。由于我们基本上是测试Django的代码,所以功能测试是一个正确的方法去做的。

    另一种方式去思考功能测试和单元测试的区别,就是功能测试主要关注在应用程序的外部,从用户的角度来进行测试,而单元测试主要是关注在应用程序的内部,从开发的角度进行测试。

在实践中会更多地体现这个概念。

在继续下个话题之前,我们先来重构我们的测试环境,使得测试起来更加简单。

    首先,我们要重写在“tests.py”文件内的第一个测试:
   
  

 from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom django.test import LiveServerTestCaseclass AdminTest(LiveServerTestCase):
   
   def setUp(self):
     self.browser = webdriver.Firefox()
   
   def tearDown(self):
     self.browser.quit()
   
   def test_admin_site(self):  
     # user opens web browser, navigates to admin page
     self.browser.get(self.live_server_url + '/admin/')
     body = self.browser.find_element_by_tag_name('body')
     self.assertIn('Django administration', body.text)
</div>

    然后运行它:
  

  $ python manage.py test ft
</div>

    它会通过:
    

  ----------------------------------------------------------------------Ran 1 test in 3.304sOK
</div>

    恭喜你!

    在继续之前,我们先看看这里是怎么回事。如果所有都通过了,你也会看到FireFox浏览器被打开,然后按照我们在测试里所用的setUp()和tearDown()方法设置的功能进行整个过程。这个测试

您可能想查找下面的文章:

  • Python之Web框架Django项目搭建全过程
  • Python之Web框架Django项目搭建全过程
  • python django事务transaction源码分析详解
  • python+django快速实现文件上传
  • Python+django实现简单的文件上传
  • Python+django实现简单的文件上传
  • 搭建Python的Django框架环境并建立和运行第一个App的教程
  • 搭建Python的Django框架环境并建立和运行第一个App的教程
  • Python的Django框架中消息通知的计数器实现教程
  • Python的Django框架中消息通知的计数器实现教程

相关文章

  • python通过apply使用元祖和列表调用函数实例
  • Python实现保证只能运行一个脚本实例
  • Mac下Supervisor进程监控管理工具的安装与配置
  • python 基础学习第二弹 类属性和实例属性
  • Python脚本暴力破解栅栏密码
  • python学习手册中的python多态示例代码
  • python 调用HBase的简单实例
  • python实现封装得到virustotal扫描结果
  • pymongo为mongodb数据库添加索引的方法
  • 浅谈python中的变量默认是什么类型

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Ubuntu下python版本管理
    • python切换hosts文件代码示例
    • 简单的通用表达式求10乘阶示例
    • 使用pdb模块调试Python程序实例
    • Pycharm学习教程(6) Pycharm作为Vim编辑器使用
    • python完成FizzBuzzWhizz问题(拉勾网面试题)示例
    • Python的面向对象编程方式学习笔记
    • python读文件逐行处理的示例代码分享
    • 用Python写的图片蜘蛛人代码
    • Python的Urllib库的基本使用教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有