一、自动化测试的目的

  利用自动化的测试代码取代手动测试,使得程序中的一些初级bug可以被自动检出,而无需人工进行重复繁琐的测试工作。

  二、编写测试用例

  利用上一节编写的skeleton,这次在projects中创建一个ex47文件夹,将骨架文件复制到ex47下,然后执行以下操作:

  1. 将所有带NAME的东西全部重命名为ex47

  2. 将所用文件中的NAME全部改为ex47

  3. 删除所有的.pyc文件,确保清理干净(该类文件为编译结果?)

  注意,书中提示可以通过执行nosetests命令来运行测试,但此步需要cd到tests的上级目录,然后直接在命令行键入nosetests运行。

  下面在bin同级的ex47文件夹下创建一个game.py,并写一些类作为测试对象,如

 class Room(object):

     def __init__(self, name, description):
self.name = name
self.description = description
self.paths = {} def go(self, direction):
return self.paths.get(direction, None) #dict.get(key, default=None) 查找键,指定键不存在时,返回default值 def add_paths(self, paths):
self.paths.update(paths) #dict.update(dict2) 将dict2里的键值对更新到dict里

  下面将单元测试骨架修改成下面的样子:

 from nose.tools import *
from ex47.game import Room def test_room():
gold = Room('GoldRoom',
"""This room has gold in it you can grab. There's a
door to it in the north.""")
assert_equal(gold.name, "GoldRoom")
assert_equal(gold.paths, {}) def test_room_paths():
center = Room('Center', "Test room in the center.")
north = Room('North', "Test room in the north.")
south = Room('South', "Test room in the south.") center.add_paths({'north':north, 'south':south})
assert_equal(center.go('north'), north)
assert_equal(center.go('south'), south)

  还可以根据模块的功能增加更多的测试用例(上面以test开头的函数,称为test case),用assert_equal断言来判断实际输出值和理想输出值是否一致。

  三、测试指南

  1. 测试文件要放在tests/目录下,并且命名为name_tests.py,否则nosetests就无法识别。这样也可以防止测试代码和别的代码相互混淆。

  2. 为创建的每一个模块写一个测试文件。

  3. 测试用例保持简短。

  4. 保持测试用例的整洁,用辅助函数代替重复代码。

  四、其他建议

  了解doc tests,这是一种另外的测试方式。(nose项目似乎已经不再更新?)

【Python基础】lpthw - Exercise 47 自动化测试的更多相关文章

  1. Python自动化测试面试题-Python基础篇

    目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...

  2. Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程

    [保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...

  3. Python之路【第二篇】:Python基础

    参考链接:老师 BLOG : http://www.cnblogs.com/wupeiqi/articles/4906230.html 入门拾遗 一.作用域 只要变量在内存中就能被调用!但是(函数的栈 ...

  4. Python 基础语法(四)

    Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...

  5. 第五篇:python基础之循环结构以及列表

    python基础之循环结构以及列表   python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.pyth ...

  6. Python之路,Day4 - Python基础4 (new版)

    Python之路,Day4 - Python基础4 (new版)   本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...

  7. Day4 - Python基础4 迭代器、装饰器、软件开发规范

    Python之路,Day4 - Python基础4 (new版)   本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...

  8. Day2 - Python基础2 列表、字典、集合

    Python之路,Day2 - Python基础2   本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一, ...

  9. python基础1之 由来、种类、优缺点、安装环境

    python基础1之由来.种类.优缺点.安装环境 一.前世今生 Python的创始人是吉多·范罗苏姆(Guido van Rossum),在1989年开发.今年最新的编程语言排行榜中,python名列 ...

随机推荐

  1. oracle 中从一个历史表中查询最新日期数据插入到另一个表中语句

    先从历史表中查询最新的一个语句: select t.id from ( select r.*, row_number() over(partition by r.分组字段 order by r.排序时 ...

  2. phpStudy环境下composer的安装

    前言 原来是做php开发的,现在转行前端工程师,因为很久没有接触了,可能会有其他问题,这里简单记录一下,后期遇到什么问题再进行更新~ 话说下载特别慢所以这里给个网盘链接Composer-Setup.e ...

  3. LocalDate使用(转)

    3.Date 3.1.JDK7 Date缺点 1.所有的日期类都是可变的,因此他们都不是线程安全的,这是Java日期类最大的问题之一 2.Java的日期/时间类的定义并不一致,在java.util和j ...

  4. 如何将vs2015中的英文注释改为中文

    找一个中文版的vs 将 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework        文件夹 ...

  5. .Net面向对象(OOP)

    序言 virtual虚方法 virtual 关键字用于在基类中修饰方法.virtual的使用会有两种情况: 情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法.那么在对派生类实例的 ...

  6. 家庭问题x

    [问题描述] 有n个人,编号为1,2,……n,另外还知道存在K个关系.一个关系的表达为二元组(α,β)形式,表示α,β为同一家庭的成员. 当n,k和k个关系给出之后,求出其中共有多少个家庭.最大的家庭 ...

  7. vfprintf()函数

    函数声明:int vfprintf(FILE *stream, const char *format, va_list arg) 函数参数: stream—这是指向了FILE对象的指针,该FILE对象 ...

  8. 也谈Tcp/Ip协议

    一. 计算机网络体系结构分层 一图看完本文 计算机网络体系结构分层 计算机网络体系结构分层 不难看出,TCP/IP 与 OSI 在分层模块上稍有区别.OSI 参考模型注重“通信协议必要的功能是什么”, ...

  9. JavaWeb-SpringSecurity图片验证ImageCode

    系列博文 项目已上传至guthub 传送门 JavaWeb-SpringSecurity初认识 传送门 JavaWeb-SpringSecurity在数据库中查询登陆用户 传送门 JavaWeb-Sp ...

  10. Eclipse项目迁移到MyEclipse后,继承HttpServlet报错问题

    网上好多说法,比如要去对比eclipse和myeclipse的.project文件等等,但我的问题就是Libraries没有导入tomcat,导入之后,报错就消失了. 这里没有给出导入方法,只是给遇到 ...