自动化三:单元测试框架一
单元测试框架: unittest
单元测试框架的基本构造:
-所有的case类都必须要继承 unittest.TestCase
-实例setUp方法(初始化测试数据)和实例tearDown方法(清理测试数据)是每次执行case的时候都会被触发执行,这两个方法的构造是可有可无的。
-所有的case执行都是写在函数里面,且函数名称必须以test开头
-在单元测试中,多数都是使用的assert系列的验证方法,不需要手动写捕获异常的代码,框架会自动捕获
-执行用例只需要执行 unittest.main() 这个方法即可。
#encoding=utf-8 import unittest import random class TestSequenceFunctions(unittest.TestCase): def setUp(self): self.seq = list(range(10)) # 初始化一个递增序列 print("setup completed!") def test_run(self): # case1 element = random.choice(self.seq) # 从序列seq中随机选取一个元素 self.assertTrue(element in self.seq) # 验证随机元素确实属于列表中 def test_sth(self): # case2 assert 1 == 2 def tearDown(self): print("tearDown completed") class TestDictValueFormatFunctions(unittest.TestCase): def setUp(self): self.seq = list(range(10)) print("setup is ready!") def test_shuffle(self): random.shuffle(self.seq) # 随机打乱原seq的顺序 self.seq.sort() self.assertEqual(self.seq, list(range(10))) # 这个是判断是否相等 # 验证执行函数时抛出了TypeError异常,函数是random.shuffle((1, 2, 3)),元组是不可变的序列类型,无法打乱排序,会触发TypeError self.assertRaises(TypeError, random.shuffle, (1, 2, 3)) # 参数顺序:错误类型, 函数名称, 函数参数 if __name__ == '__main__': unittest.main() # 执行case需要调用这个方法,这个方式是执行全部的case
执行结果: