欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 接口自动化测试框架-unittest框架的基本使用

程序员文章站 2024-03-21 23:14:52
...

一、unittest简单介绍
1、import unittest
2、定义一个继承自unittesu.TestCase的测试用例类
3、定义SetUp和TearDown,在每个测试用例前后做一些辅助工作
4、定义测试用例,名字以test开头
5、一个测试用例应只测试一方面,测试目的和测试内容应很明确,主要调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符
6、调用unittest.main()启动测试
7、如果测试没有通过,会输出响应的错误提示,如果测试全部通过则不显示任何东西,也可添加-V参数显示详细信息
二、unittest的基本使用

import unittest #导入unittest模块

class testCase(unittest.TestCase): #创建单元测试类,继承unittest.TestCase

	#setUp
	'''
	1、用于每个测试用例执行前的初始化工作
	2、所有类中方法的入参为self,定义实例变量也要self变量
	'''
    def setUp(self):
        print("case执行前")

	#tearDown
	'''
	每个测试用例执行后的都会执行此方法
	'''
    def tearDown(self):
        print("case执行后")

	#setUpClass
	'''
	1、每个单元测试类运行前调用该方法,只会执行一次
	2、属于类方法,需要加上装饰器@classmethod
	3、默认入参为cls,指的就是‘类对象’本身,其实和self没什么区别,用法一致
	'''
    @classmethod
    def setUpClass(cls):
        print("对象执行前")

	#tearDownClass
	'''
	1、每个单元测试类运行后调用该方法,只执行一次
	2、属于类方法,需要加上装饰器@calssmethod
	'''
    @classmethod
    def tearDownClass(cls):
        print("对象执行后")

    def test_1(self):
        print("test1")

    def test_2(self):
        print("test2")

if __name__ == '__main__':
    #unittest.main()
    '''
	1、运行单元测试
	2、该命令会搜索当前module下所有以test开头的测试用例,并运行他们
	3、执行顺序是按照case的命令
	'''
    unittest.main()

执行后的效果
python 接口自动化测试框架-unittest框架的基本使用

三、unittest模块的常用方法
1、assertEqual(a,b) a == b
2、assertNotEqual(a,b) a != b
3、assertTrue(x) bool(x) is True
4、assertFalse(x) bool(x) is False
5、assertIs(a,b) a is b
6、assertIsNot(a,b) a is not b
7、assertIsNone(x) x is None
8、assertIsNotNone(x) x is not None
9、assertIn(a,b) a in b
10、assertNotIn(a,b) a not in b
11、assertIsInstance(a,b) isinstance(a,b)
12、assertNotIsInstance(a,b) not isinstance(a,b)
四、unittest测试用例跳过执行

import unittest
import sys

class testCase(unittest.TestCase):
	
	#直接跳过
	'''跳过测试用例,reason为测试被跳过的原因'''
	@unittest.skip("直接跳过")
	def test_skip(self):
		self.fail("不会被执行")
	
	#满足condition则跳过
	'''当condition为真时,跳过测试用例'''
	@unittest.skipIf(1 < 2,"满足condition则跳过")
	def test_skipIf(self):
		print("skip If")
	
	#不满足condition则跳过
	'''跳过测试用例,除非condition为真'''
	@unittest.skipUnless(sys.platform.startswith("win"), "需要window平台才不会跳过")
	def test_skipUnless(self):
		print("skip Unless")
	
	#预期该测试用例会测试失败
	'''把测试用例标记为预计失败;如果测试不通过,会被认为测试城管;如果测试通过了,则被认为测测试失败'''
	@unittest.expectedFailure
	def test_fail(self):
		self.assertEqual(1,0,"broken")
	
	#方法体内跳出不执行case
	def test_maybe_skipped(self):
		if True:
			'''在方法体内满足某些条件下才跳过执行该测试用例'''
			self.skipTest("调用unittest的skipTest,在方法体内满足某些条件则跳过该case")
		pass
if __name__ == '__main__':
	unittest.main()

python 接口自动化测试框架-unittest框架的基本使用