【Python】unittest-1
一、Unittest 单元测试 将测试结果和期望值作对比
(1) 继承
(2) 引用包
(3) 执行一次test就会调用一次setup和tearDown
(4) 类名以test开头
(5) 断言异常
(6) 有一个点表示通过一个测试用例
二、如果有一个单元测试执行失败,抛异常或断言失败,依然会被执行。断言失败会显示E
凡是以test开头的方法都是测试方法,反之不是,测试时候不会执行。其中,unittest.TestCase提供很多内置的条件判断,我们可以调用这些方法断言输出是否是我们所预计的。
一般分为两种,一种是assertEqual():断言某两个结果是否一致。一种是assertRaises():断言是否是期待抛出的指定错误类型。
另外,可以通过在单元测试中增加两个特殊函数setUp()和tearDown()函数,已实现在每调用一个测试方法的前后分别执行指定的动作,其中setUp是在测试函数调用前执行,tearDown是在之后执行,每次执行用例时都会: setUp->test_case->tearDown ;也就是说可以使用setUp和tearDown做每个用例的环境初始化
dome1:
每次执行用例时都会: setUp->test_case->tearDown ;也就是说可以使用setUp和tearDown做每个用例的环境初始化
import unittest class MyTestCase(unittest.TestCase):
# 预置环境
def setUp(self):
print '开始执行' # 清理环境
def tearDown(self):
print '结束执行' # 测试用例
def test_case1(self):
print '用例1' # 测试用例
def test_case2(self):
print '用例2' if __name__ == '__main__':
unittest.main()
dome2:
每个class用一次,setUpClass->test_case1->test_case2->tearDownClass;也就是说使用setUpClass、tearDownClass可以做所有用例的前置初始化和结束
import unittest class MyTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
print '开始执行' @classmethod
def tearDownClass(cls):
print '结束执行' # 测试用例
def test_case1(self):
print '用例1' # 测试用例
def test_case2(self):
print '用例2' if __name__ == '__main__':
unittest.main()
三、unittest练习
#写一个读文件的类,里面有个方法可以读取文件的全部内容。
#写个单元测试,断言文件中包含关键字"glory road"
main.py
import unittest
import random
from handle_file import HandleFile class TestSequenceFunctions(unittest.TestCase):
def test_run(self):
content = HandleFile.read_file("e:\\test4\\ip.txt")
self.assertTrue("glory road" in content) if __name__ == "__main__":
unittest.main()
handle_file.py
import os class HandleFile():
@staticmethod
def read_file(file_path):
if os.path.exists(file_path):
with open(file_path) as f:
return f.read()
else:
return "no file" if __name__=="__main__":
hf=HandleFile()
print hf.read_file("e:\\test4\\ip.txt")
【Python】unittest-1的更多相关文章
- 【python】unittest中常用的assert语句
下面是unittest模块的常用方法: assertEqual(a, b) a == b assertNotEqual(a, b) a != b assertTrue(x) b ...
- 【Python②】python之首秀
第一个python程序 再次说明:后面所有代码均为Python 3.3.2版本(运行环境:Windows7)编写. 安装配置好python后,我们先来写第一个python程序.打开IDLE (P ...
- 【python】多进程锁multiprocess.Lock
[python]多进程锁multiprocess.Lock 2013-09-13 13:48 11613人阅读 评论(2) 收藏 举报 分类: Python(38) 同步的方法基本与多线程相同. ...
- 【python】SQLAlchemy
来源:廖雪峰 对比:[python]在python中调用mysql 注意连接数据库方式和数据操作方式! 今天发现了个处理数据库的好东西:SQLAlchemy 一般python处理mysql之类的数据库 ...
- 【python】getopt使用
来源:http://blog.chinaunix.net/uid-21566578-id-438233.html 注意对比:[python]argparse模块 作者:limodou版权所有limod ...
- 【Python】如何安装easy_install?
[Python]如何安装easy_install? http://jingyan.baidu.com/article/b907e627e78fe146e7891c25.html easy_instal ...
- 【Python】 零碎知识积累 II
[Python] 零碎知识积累 II ■ 函数的参数默认值在函数定义时确定并保存在内存中,调用函数时不会在内存中新开辟一块空间然后用参数默认值重新赋值,而是单纯地引用这个参数原来的地址.这就带来了一个 ...
- 【Python】-NO.97.Note.2.Python -【Python 基本数据类型】
1.0.0 Summary Tittle:[Python]-NO.97.Note.2.Python -[Python 基本数据类型] Style:Python Series:Python Since: ...
- 【Python】-NO.99.Note.4.Python -【Python3 条件语句 循环语句】
1.0.0 Summary Tittle:[Python]-NO.99.Note.4.Python -[Python3 条件语句 循环语句] Style:Python Series:Python Si ...
- 【Python】-NO.98.Note.3.Python -【Python3 解释器、运算符】
1.0.0 Summary Tittle:[Python]-NO.98.Note.3.Python -[Python3 解释器] Style:Python Series:Python Since:20 ...
随机推荐
- hash、hashchange事件
1.hash即URL中"#"字符后面的部分. ①使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或name)与hash值一样的元素的位置: ②hash还有另 ...
- poj-2154-polya+euler函数
Color Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11758 Accepted: 3783 Descriptio ...
- OpenStack设计与实现5——RESTful API和WSGI
转https://segmentfault.com/a/1190000004361778 Tips:文章为拜读@xingjiarong 后有感而做的分享,先对作者表示感谢,附原文地址:http://b ...
- servlet-api-2.4.jar not loaded(转)
信息: validateJarFile(D:/xj/workspace/webworktest/webapp/WEB-INF/lib/servlet-api-2.4.jar) - jar not lo ...
- [luogu P1169] [ZJOI2007]棋盘制作
[luogu P1169] [ZJOI2007]棋盘制作 题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的 ...
- linux -- 基于zookeeper搭建yarn的HA高可用集群
linux -- 基于zookeeper搭建yarn的HA高可用集群 实现方式:配置yarn-site.xml配置文件 <configuration> <property> & ...
- selinux介绍/状态查看/开启/关闭
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统--百度百科. 基于经验来说SELinux在 ...
- js问题 项目问题
项目问题1. js 中字符串替换函数var a = 'fajlfjal'a.replace(/b/,'a') // 不能直接改变a 而是返回替换后的值 2. vue 属性绑定中 class style ...
- 用mobiscroll.js如何简单使用日期控件
首先,可以到官网学习,地址:https://docs.mobiscroll.com 第一步:引用js.css样式 1)mobiscroll.css 2)mobiscroll_date.css 3)jq ...
- laravel中判断当前页面与连接地址是否一致,并添加效果: