编程语言
首页 > 编程语言> > 学习python自动化——unittest

学习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