UnitTest框架学习(下)

简介: UnitTest框架学习(下)

断言



断言的定义


断言的定义

概念: 断言就是让程序代替人为判断测试程序执行结果是否符合预期结果的过程。


断言的意义


实现自动化测试


断言结果


True: 
  用例通过
False: 
  用例未通过


常见的断言方法

image.png


。。。。有很多


使用方法:


self.aseertEqual(预期结果,实际结果) 
相等 ,则预期通过。不相等则是不通过。
self.assertIn(预期结果,实际结果) 
判读预期结果是否包含在实际结果中  实际>预期
包含则为true


使用断言来比较之前的测试


def test_demo(self):
        # 比较实际结果 和 预期结果是否相等
        self.assertEqual(3, add(1, 2))
# 用上面的代替下面的
    def test_demo1(self):
        # 比较实际结果 和 预期结果是否相等
        if add(10, 11) == 22:
            print("测试通过!")
        else:
            print("测试不通过!")


他不会生成结果,如果测试失败他就不会通过,如果成功, 那么就会显示ok, 然后通过下面的步骤就可以导出测试报告。


image-20230504152033984.png


参数化



参数化 在测试方法中, 通过使用 变量来代替具体的测试数据, 然后使用传参的方法将
数据传递给方法变量。
好处 : 相似的代码不需要重复读写
日常场景: 
  测试数据一般放在json数据中
  使用读取json文件, 提取我们需要的数据

安装相关的插件

通过终端 : 输入 pip install parameterized即可


步骤

步骤: 
  1. 导包
  2. 定义测试类
  3. 书写测试方法(用到的测试数据使用变量代替)
  4. 组织测试数据并传参 (数据和顺序需要保证一致)
# 1. 导包
import unittest
from parameterized import parameterized
from Demo.tools import add
# 2. 定义测试类 ,书写测试方法 。(用到的测试数据使用变量代替)
class testAddOne(unittest.TestCase):
    """自定义测试类,实现测试方法的书写"""
    @parameterized.expand(data)     # 使用装饰器的方法传参
    def test_demo(self, paramA, paramB, expect):
        # 比较  预期结果 and 实际结果 是否相等
        self.assertEqual(expect, add(paramA, paramB))

     

组织测试数据并传参
# 组织测试数据
组织数据的格式
# [(),(),()....] 或者 [[],[],[],[]....]
data = [
    (1, 2, 3),
    (11, 21, 32),
    ...
]


传参通过装饰器的方法(也就是Java中的注解形式)

@parameterized.expand(data)     # 使用装饰器的方法传参

def test_demo(self, paramA, paramB, expect)



参数化二


通过导入测试化数据的方式来完成测试


1.导入测试化数据


image-20230504170314546.png


2.完成对数据的读取和转换(通过定义方法完成)


def build_Data():
    data = []   # 用于接收数据
    with open('H:\pythonStudy\Case\data.json', encoding='UTF-8') as f:
        result = json.load(f)  # f中是列表里面套元组的过程, 而我们需要的是列表里面套列表的形式
        for i in result:  # i 就是里面的每个数据 {   XXX }
            # 将数据存储到data中, 然后作为组织测试数据返回
            data.append((i.get('param1'), i.get('param2'), i.get('param3')))
    return data

在自定义测试类中,通过装饰器传参导入数据


class testAddOne(unittest.TestCase):
    """自定义测试类,实现测试方法的书写"""
    @parameterized.expand(build_Data())  # 使用装饰器的方法传参
    def test_demo(self, paramA, paramB, expect):
        # 比较  预期结果 and 实际结果 是否相等
        self.assertEqual(expect, add(paramA, paramB))

跳过


对一些未完成的 ,或者不满足测试条件的测试函数和测试类,可以跳过执行

使用方法


直接将测试函数标记成为跳过
@unittest.skip('代码为完成')
# 根据条件判断测试函数是否跳过
@unittest.skipIf(condition,reason)

实现



class testAddOne(unittest.TestCase):
    """自定义测试类,实现测试方法的书写"""
    version = 30
    # @unittest.skipIf()
    @parameterized.expand(build_Data())  # 使用装饰器的方法传参
    def test_demo(self, paramA, paramB, expect):
        # 比较  预期结果 and 实际结果 是否相等
        self.assertEqual(expect, add(paramA, paramB))
    @unittest.skipIf(version >= 30, '版本号大于等于30 ,不用测试')
    def test_demo1(self):
        # 比较实际结果 和 预期结果是否相等
        if add(10, 11) == 22:
            print("测试通过!")
        else:
            print("测试不通过!")
    @unittest.skip("不想测试了")
    def test_demo2(self):
        # 比较实际结果 和 预期结果是否相等
        if add(11, 2) == 13:
            print("测试通过!")
        else:
            print("测试不通过!")


image-20230504172724209.png


测试报告的生成



只有testCase的才能生成 ,使用testSuite 和 testRunner包装的套件对象无法生成

使用第三方的类库生成报告


将第三方的测试运行类模块放在当前代码的目录中
步骤 :
  1. 导包unittest
  2. 使用套件对象 ,加载对象, 去添加测试用例
  3. 实例化第三方的运行对象, 并运行套件对象


目录
相关文章
|
19天前
|
测试技术 Python
Python测试架构unittest
【4月更文挑战第19天】
9 3
|
10月前
|
测试技术 Python
UnitTest框架学习(上)
UnitTest框架学习(上)
43 0
|
JSON 测试技术 数据库
unittest 测试框架的使用
1. unittest 框架解析 2. 批量执行测试脚本 1)构建测试套件 addTest() 方法 makeSuite() 方法 TestLoader() 方法 2)用例的执行顺序 3)忽略测试用例的执行 3. unittest 断言 4. HTML 报告生成 5. 异常捕获与错误截图 6. 数据驱动 1)测试多个不同数据 2)测试某个文件中的多组数据 txt 文件或者 csv 文件 JSON 文件
116 0
|
测试技术 C++ Python
【进阶Python】第九讲:单元测试之unittest
在开发中,为了保证项目的正常运行,能够按照预期正确的输出我们想要的结果,单元测试时必不可少的。在Python中,用于测试的库有很多,其中较为常用的就是本文的主角--unittest。本文会详细介绍unittest的两种常见用法,同时会介绍使用频率相对较少的跳过、复用等方法。
【进阶Python】第九讲:单元测试之unittest
|
测试技术
自动化测试教程(11)使用Unittest框架
定义setUp( )方法、tearDown( )方法、setUpClass( )方法、tearDownClass( )方法。通过命令行或者unittest.main( )方法执行时,main会调用TextTestRunner中的run()方法
自动化测试教程(11)使用Unittest框架
|
测试技术 数据库
自动化测试教程(10)了解Unittest
1.Unittest最核心的是TestCase、TestSuite、TestRunner、TestFixture四部分。(1)TestCase:用户自定义测试用例的基类,调用run( )方法时,会依次调用setUp( )方
|
测试技术 数据库 Python
Python3,Pytest单元测试框架有多简单,8分钟就能入门,人人都能上手!!
Python3,Pytest单元测试框架有多简单,8分钟就能入门,人人都能上手!!
220 0
Python3,Pytest单元测试框架有多简单,8分钟就能入门,人人都能上手!!
|
JSON 数据可视化 测试技术
python之unittest框架实现接口测试实例
python之unittest框架实现接口测试实例
125 0
|
测试技术
unittest自动化框架实战案例
unittest自动化框架实战案例
107 1
unittest自动化框架实战案例
|
测试技术 Python
Python编程:使用unittest模块进行单元测试
Python编程:使用unittest模块进行单元测试
112 0