Unittest测试框架
Unittest框架的组成:
test fixture、test case、test suite、test runner
Unittest组成部分描述
test fixture: 测试固定组件,unittest框架中,一些有固定用法的组件
test case : 测试用例,被执行测试的最小单元
test suite: 测试套件,它是一个用例集,用来汇总应该一起执行的测试用例。
test runner:测试运行器,它是一个设计测试执行方式的元件,主要对用户提供了输出结 果的展现方式。它可以用图标、文本、html等方式来展现测试结果

注意:
TestCase就是Unittest框架执行的测试用例。
主要用法是,把测试用例编写在继承了TestCase的类中,通过unittest.main()来自动加载测试用例运行
靠背啦,注意点⚠️:
每个测试用例都默认用test开头,非test开头的用力不会去自动执行诶
每个测试用例的执行顺序都是按ASCLL码执行的哈, 🐎越小,越先跑
只有执行unittest.TestCase的类才会被unttest.main()运行哦
实例:
import unittest
class UnittestDemo(unittest.TestCase):
def test01(self):
print("这是测试1")
def test02(self):
print("这是测试02")
if __name__ =="__main__":
unittest.main()
给👴快速跳过啊喂! (跳过要执行的测试用例
当我们希望跳过一些测试测试用例,不执行时,我们可以使用装饰器@unitest.skip("备注")来完成
import unittest # 导包
class XXX(unittest.TestCase):
def test01(self):
print("执行测试用例1")
@unittest.skip("demonstrating skipping")
def test02(self):
print("执行测试用例2") def test03(self):
print("执行测试用例3")
if __name__ == '__main__':
unittest.main()
咱就说 要进入TestFixture 了哦
一共四个回合(以下没有先后顺序:
TestFixture一般使用4个常见方法:setUp()、tearDown()、setUpClass()、tearDownClass()需要注意的是,在代码中,大小写严格区分。
首先! 第一回合: setUp()
每运行一个测试用例之前,先运行的函数;主要用于设置一些配置信息,静态属性等等
其次! 第二回合:setUp Class()
它是类方法,必须和@classmethod装饰器结合使用(unittest设计如此)实例化类后,会自动运行的方法,主要用于实例化类、设置某些环境配置如数据库连接 配置等等。
再其次! 第三回合:tearDown()
每运行完一个测试用例之后,后运行的函数;主要用于销毁每个测试用例之间的数据, 释放资源,还原数据
最后! 最终回合! :tearDownClass ()
类中的代码全部运行完成后,会自动运行的方法,主要用于销毁类级别的资源,还原数据。
import unittest
class MathDemo:
def plus(self, x, y):
return x + y
class TestFixtureDemo(unittest.TestCase):
add = None
def setUp(self):
self.x = 1
self.y = 1
@classmethod
def setUpClass(cls):
cls.add = MathDemo()
def tearDown(self):
del self.x
del self.y
@classmethod
def tearDownClass(cls):
del cls.add
def test01(self):
result = self.add.plus(1, 2)
print(result)
def test02(self):
result = self.add.plus(3, 5)
print(result)
if __name__ == '__main__':
unittest.main()
敲黑板啦! ! ! 🌟🌟🌟 🌟🌟断言
断言是让程序帮助人来判断,实际结果与预期结果的一种方法。
进行自动化测试中,只能通过断言来判断执行结果是否正确。所以,掌握断言技术是进行自动化测试的前提条件。
Python语言自带断言,但是应用时,会有许多不方便理解的地方。为了让我们能更方便的断 言数据,Unittest对Python的断言进行了多层封装,使断言更丰富,更容易使用。
Unittest断言方法 作用
assertEqual(a,b) 检查a和b是否相等
assert True(X) 检查X是不是一个True
assertIs(a,b) 检查a和b是不是完全一样
assertIsNone(X) 检查X是不是一个none
assertIn(a,b) 检查a是不是在b的子集中
assertIsIn stance(a,b) 检查a,b两个对象,实例的类型是否相同
import unittest
class TestAssertDemo(unittest.TestCase):
def setUp(self):
self.list1,self.list2 = [1,4],[5,8]
self.a,self.b = 1,6
def test01_assertEqual(self):
self.assertEqual(self.a,self.b) # a和b相等
def test02_assertIs(self):
self.assertIs(self.list1,self.list2) #s是否相同
self.assertIs(self.a,self.b)
def test03_assertTrue(self):
self.assertTrue(self.list1,self.list2) #返回结果为True
def test04_assertIsNOne(self):
self.assertIsNone(self.a,int) #不为空
self.assertIsNone(self.list1,list)#不为空
def test05_assertIn(self):
self.assertIn(self.l1, self.l2) # l1 不是l2的子集
def test06_assertIsInstance(self):
self.assertIsInstance(self.a,int) # a是int整型
self.assertIsInstance(self.l1,list) # l1是list列表型
if __name__ =="__main__":
unittest.main()

浙公网安备 33010602011771号