【Python基础】lpthw - Exercise 47 自动化测试
一、自动化测试的目的
利用自动化的测试代码取代手动测试,使得程序中的一些初级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 自动化测试的更多相关文章
- Python自动化测试面试题-Python基础篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程
[保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...
- Python之路【第二篇】:Python基础
参考链接:老师 BLOG : http://www.cnblogs.com/wupeiqi/articles/4906230.html 入门拾遗 一.作用域 只要变量在内存中就能被调用!但是(函数的栈 ...
- Python 基础语法(四)
Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...
- 第五篇:python基础之循环结构以及列表
python基础之循环结构以及列表 python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.pyth ...
- Python之路,Day4 - Python基础4 (new版)
Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...
- Day4 - Python基础4 迭代器、装饰器、软件开发规范
Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...
- Day2 - Python基础2 列表、字典、集合
Python之路,Day2 - Python基础2 本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一, ...
- python基础1之 由来、种类、优缺点、安装环境
python基础1之由来.种类.优缺点.安装环境 一.前世今生 Python的创始人是吉多·范罗苏姆(Guido van Rossum),在1989年开发.今年最新的编程语言排行榜中,python名列 ...
随机推荐
- --print-defaults打印mysqld启动加载配置
Mysql启动配置文件加载路径 Mysql可以读取到的配置文件 /etc/my.cnf /etc/mysql/my.cnf /usr/local ...
- Android Studio Terminal 常用命令
一.Manifest merger failed with multiple errors, see logs 在android开发的时候,有时候会遇到这样的问题 Error:Execution fa ...
- BZOJ 4128: Matrix (矩阵BSGS)
类比整数的做法就行了 1A爽哉 #include<bits/stdc++.h> using namespace std; typedef long long LL; const int M ...
- WTL自定义控件:edit输入响应
自定义的edit控件,获取edit输入响应的消息: 头文件部分: BEGIN_MSG_MAP(CCheckEditEx) MESSAGE_HANDLER(WM_CHAR, OnChar) END_MS ...
- 【winfrom-Button】设置带图标样式的Button
this.myButton.BackColor = System.Drawing.SystemColors.Control; this.myButton.FlatAppearance.BorderCo ...
- 【leetcode】1281. Subtract the Product and Sum of Digits of an Integer
题目如下: Given an integer number n, return the difference between the product of its digits and the sum ...
- 在jquery中,使用ajax上传文件和文本
function onSubmit (data) { //获取文本 var callingContent = $('#callingContent').val() // 获取文件 var files ...
- PCI-CAN卡端口配置程序设计
每个PCI-CAN卡实现了2个CAN通信通道,但共用一个PCI接口(9030).在windows驱动中,每一个PCI接口只能被某一个进程独占使用,这就意味着:映射在同一块板卡上的2个CAN通道,只能在 ...
- nu.random.seed()如何理解
结论: np.random.seed(a) # 按照规定的顺序生成随机数 # 参数a指定了随机数生成的起始位置: # 如果两处都采用了np.random.seed(a),且两处的参数a相同,则生成的随 ...
- ETL工具-KETTLE教程专栏1----术语和定义
1-资源库 资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在资源库中. 资源库可以使多用户共享转换任务,转换任务在资源库中是以文件夹形式分组管理的,用户可以自定义文 ...