UnitTest框架学习(上)

简介: UnitTest框架学习(上)

Python框架之UnitTest



image-20230504104145035.png


UnitTest框架测试



image-20230504120042714.png


一. TestCase


每一个TestCase(测试用例)都是一个代码文件, 在其中来书写真正的测试用例
代码必须按照标识符的规则来书写


步骤


导包
自定义测试类
在测试类中书写测试用例
执行用例

代码实现


import unittest
class TestDemo(unittest.TestCase):
    '自定义测试案例类,需要继承测试模块中中的TestCase类即可'
    # 测试方法就是我们需要的用例代码
    # 暂时我们用print代替
    def test_method1(self):
        print("测试方法一")
    def test_method2(self):
        print("测试方法二")


常见的错误


代码文件的名字以数字开头
代码文件名字中有空格
代码文件中有中文
其他特殊符号
(数字、字母、下滑线组成,不能以数字开头)


二. 使用UnitTet中的TestSuite管理测试用例TestCase



步骤:
  导包  
  实例化套件对象(TestSuite)
  使用套件对象添加用例方法
# 1. 导包
import unittest
from RayStuDayOne.testCxase import TestDemo
# 2. 实例化套件对象
suite = unittest.TestSuite()
# 3. 使用套件对象添加用例方法
suite.addTest(TestDemo('test_method1'))
suite.addTest(TestDemo('test_method2'))
# 这里也可以用下面的方法,只是idea没有提示
suite.addTest(unittest.makeSuite(类名))


注意 :
  1. test方法必须以 test_ 开头,不然就不会生成测试方法,也就不会执行
  2.


三. 使用TestRunner执行测试套件(TestSuite)


testSuite : 作用是打包管理测试用例(testCase)
TestRunner : 执行TestSuite(套件)

步骤


导包
实例化运行对象
使用运行对象去执行套件对象

实现代码

# 1. 导包
import unittest
from RayStuDayOne.testCxase import TestDemo
# 2. 实例化套件对象
suite = unittest.TestSuite()
# 3. 使用套件对象添加用例方法
suite.addTest(TestDemo('test_method1'))
suite.addTest(TestDemo('test_method2'))
# 这里也可以用下面的方法,只是idea没有提示
suite.addTest(unittest.makeSuite(类名))
# 4. 实例化运行对象
runner = unittest.TextTestRunner()
# 5. 使用运行对象去执行套件对象 ,里面写套件对象
runner.run(suite)

 

image-20230504111348398.png


整体测试实现:


首先明确需求


需求 :

完成对add方法的测试


def add(a, b):
    return a + b

书写TestCase测试用例


步骤 
  导包
    自定义测试类
    在测试类中书写测试用例


import unittest
from Demo.tools import add
class testAdd(unittest.TestCase):
    """自定义测试类,实现测试方法的书写"""
    def test_demo(self):
        # 比较实际结果 和 预期结果是否相等
        if add(1, 2) == 3:
            print("测试通过!")  # 现在暂时是用打印, 以后是直接靠断言
        else:
            print("测试不通过!")
    def test_demo1(self):
        # 比较实际结果 和 预期结果是否相等
        if add(10, 11) == 22:
            print("测试通过!")
        else:
            print("测试不通过!")
    def test_demo2(self):
        # 比较实际结果 和 预期结果是否相等
        if add(11, 2) == 13:
            print("测试通过!")
        else:
            print("测试不通过!")


使用测试套件(TestSuite)来管理测试用例


步骤
  导包
    实例化套件对象(TestSuite)
    使用套件对象添加用例方法

使用测试执行 来执行测试套件


实例化运行对象
使用运行对象去执行套件对象


# 1. 导包
import unittest
from Demo.testDemo import testAdd
# 2. 使用Suite 和 Runner 管理testAdd(unittest.TestCase)文件
# 3. 实例化套件对象
suite = unittest.TestSuite()
# 4. 添加测试方法
suite.addTest(unittest.makeSuite(testAdd))
# 5. 实例化执行对象
runner = unittest.TextTestRunner()
# 6. 执行测试套件
runner.run(suite)


TestLoader(测试加载)


对TestSuite进行补充
管理多个TestCase
比如: 
  如果TestCase的代码文件有很多(10,20,30)
步骤:
  1. 导包
  2. 实例化测试加载对象 并添加测试用例 ---- 》 得到的是suite对象
  3. 实例化运行对象
  4. 运行对象执行套件对象


代码实现

# 1. 导包
import unittest
import Case
# 2. 实例化加载对象 ,并添加用例
# discover 就是发现这个加载, 就可以将这个加载 作为suite对象来使用,同时 discover就可以按照通配符来进行匹配
# 比如我们这里匹配的就是Case目录下 的 以test开头的py文件
suite = unittest.TestLoader().discover('Case', 'test*.py')
# 3. 使用测试运行 来运行测试loader
runner = unittest.TextTestRunner()
runner.run(suite)

还可以简化

image-20230504122758635.png


Fixtrue ( 测试夹具)


是一种 代码结构
在某种特定情况下, 会自动执行
需要就写 ,不需要就不用写


方法级别


在每个测试方法(用例代码) 执行前后都会自动调用的结构


def setup(self):
    # 在每个测试方法执行之前都会执行
    pass
def teardown(self):
    # 在每个测试方法执行之后都会执行
    pass

 

类级别

在每个测试类中所有方法执行前后, 都会自动调用的结构(在整个类中, 执行之前执行之后各一次)
# 类级别的Fixture方法 , 是一个类方法
# 类中所有方法之前
@classmethod
def setupClass(cls):
    pass
@classmethod
def tearDown(self):
    pass

模块级别

image-20230504123752386.png


案例


打开浏览器 ------------类级别
输入网址   ------------方法级别
输入用户名密码 验证吗点击登录 ---------测试方法
关闭当前页  ------------方法级别
关闭浏览器------------类级别
+++++++++++++++++++++++++++++++++++++
一值重复上述的结构

执行


image-20230504124246887.pngimage-20230504124332819.png



运行结果


image-20230504124345218.png


目录
相关文章
|
19天前
|
测试技术 Python
Python测试架构unittest
【4月更文挑战第19天】
9 3
|
10月前
|
Java 测试技术
UnitTest框架学习(下)
UnitTest框架学习(下)
47 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