一、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")