ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

学习python自动化——unittest

2022-06-21 18:02:24  阅读:172  来源: 互联网

标签:python unittest 测试用例 测试 自动化 test suite self


一、什么是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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有