学习python自动化——unittest
作者:互联网
一、什么是unittest
单元测试框架,unittest(python自带的),pytest(第三方库)
import unittest
二、步骤
2.1、TestCase(测试用例)
2.1.1、创建测试类
1)类名建议Test开头,必须继承unittest.TestCase
class TestLogin(unittest.TestCase):
2.1.2、测试用例函数
1)必须在测试类里面
2)函数名必须是test开头
3)执行顺序,按照ASCII码顺序执行,小的先执行
class TestLogin(unittest.TestCase):
def test_login_01(self):
print('test_login_01')
def test_login_02(self):
print('test_login_02')
2.1.3、前置条件:执行这个场景的前提条件
1)函数级别:每个用例(函数)执行之前执行
def setUp(self) -> None: #函数级别前置条件
2)类级别:每个测试类执行之前执行,只执行一次(函数级别和类级别同时存在时,优先执行完类级别的前置和后置)
@classmethod
def setUpClass(cls) -> None: #类级别前置条件
2.1.4、业务逻辑:接口需要处理的,根据业务情况封装处理
2.1.5、assert断言:将预期结果与实际结果进行对比
如果不成立,就会抛出异常,unittest框架就会根据异常将对应的测试用例标记为失败
a:期望结果,b:实际结果
1)self.assertEqual(a,b) 比对数值a==b
2)self.assertNotEqual(a,b) 比对数值a!=b
3)self.assertTrue(x) 比对布尔值 bool(x) is True
4)self.assertFalse(x) 比对布尔值bool(x) is False
5)self.assertIn(a,b) 比对a in b
6)self.assertNotIn(a,b) 比对a not in b
7)self.assertIs(a,b) 比对内存地址a is b
8)self.assertIsNot(a,b) 比对内存地址a is not b
self.assertEqual(1,1) #对比两个值是否相等
2.1.6、后置清理:清理测试数据
1)函数级别:每个用例执行结束后执行
def tearDown(self) -> None: #函数级别后置清理
2)类级别:每个测试类执行结束后执行,只执行一次(函数级别和类级别同时存在时,优先执行完类级别的前置和后置)
@classmethod
def tearDownClass(cls) -> None: #类级别后置清理
2.2、TestSuite(测试套件):将测试用例放到测试套件中
2.3、TestLoader(用例收集)
2.3.1、添加单个测试用例【了解】
1)实例化测试套件(创建测试套件)
suite=unittest.TestSuite()
2)添加测试用例到测试套件:suite.addTest(类('测试用例名称'))
suite.addTest(TestLogin('test_login_01'))
2.3.2、添加多个测试用例【了解】
1)实例化测试套件(创建测试套件)
suite=unittest.TestSuite()
2)添加多个测试用例
test_case_list=[TestLogin('test_login_01'),TestLogin('test_login_02'),TestLogin('test_login_03')]
suite.addTests(test_case_list)
2.3.3、添加整个测试类【了解】
1)实例化测试套件(创建测试套件)
suite=unittest.TestSuite()
2)添加测试类
suite.addTest(unittest.makeSuite(TestLogin))
2.3.4、TestLoader用例收集
1)获取测试用例目录(路径)
dir_path=os.path.dirname(__file__)
2)获取测试用例unittest.defaultTestLoader.discover()
#star_dir:测试用例目录(路径)
#pattern=‘test*.py’:需要执行的测试用例的.py文件,默认是test开头的,若文件本身就是test开头,则不需要传pattern;在该目录下有多个test开头时,不传时默认所有test开头
suite=unittest.defaultTestLoader.discover(start_dir=dir_path,pattern='mango*.py')
2.4、TestRunner(用例执行)
1)不需要初始化函数,不需要实例化
2)需要配置执行器:File>>>Settings>>>Tools>>>Python Integrated Tools>>>Default test runner:Unittests
2.5、生成测试报告
2.5.1、TextTestRunner
1)创建运行器
run=unittest.TextTestRunner()
2)将测试套件放到运行器执行
run.run(suite)
2.5.2、BeautifulReport
1)安装:BeautifulReport
pip install BeautifulReport
2)导入包
from BeautifulReport import BeautifulReport
3)生成测试报告
reports = BeautifulReport(suites=suite)
reports.report(description='py39期测试报告',filename='html_report.html')
#report_dir: 生成report的文件存储路径(默认当前路径)
#filename: 生成文件的filename
#description: 生成文件的描述
#theme: 报告主题名
2.5.3、unittestreport
1)安装:unittestreport
pip install unittestreport
2)导入包
from unittestreport import TestRunner
3)生成测试报告
runner=TestRunner(suite=suite,
filename='test_report_py39',
tester='芒果',
desc='39期柠檬班测试报告',
templates=1)
runner.run()
#filename:生成文件的filename
#report_dir:生成report的文件存储路径(默认当前路径)
#title:测试报告标题
#tester:测试员
#desc:生成文件的描述
#templates:模板,默认是1,还有2,3两种测试报告模板
标签:python,unittest,测试用例,测试,自动化,test,suite,self 来源: https://www.cnblogs.com/mango-93/p/16389013.html