IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> unittest框架-基础知识 -> 正文阅读

[开发测试]unittest框架-基础知识

一、什么是UnitTest框架

UnitTest是python自带的一个单元测试框架,用它来做单元测试。

对于测试来说,unittest框架的作用是自动化脚本(用例代码)执行框架,使用unittest框架来管理运行多个测试用例的。

二、为什么使用框架

1. 能够组织多个用例去执行

2.提供丰富的断言方法(让程序代替人工自动的判断预期结果和实际结果是否相符)

3. 能够生成测试报告

三、UnitTest核心要素

1. Testcase(测试用例)

TestCase是unittest框架的组成部分,不是手工和自动化所说的用例

主要作用:每个TestCase(测试用例)都是一个代码文件,在这个代码文件中来书写真正的用例代码

"""
代码的目的:学习TestCase(测试用例)模块的书写方法
"""
# 1.导入unittest包
import unittest

# 2.自定义的测试类,只要继承unittest模块中的TestCase类即可


class TestDemo(unittest.TestCase):
    # 书写测试方法,即用例代码
    # 书写要修,测试方法必须以test_ 开头(本质是以test开头)
    def test_method1(self):
        print('测试方法 1')

    def test_method2(self):
        print('测试方法 2')

# 4 执行用例(方法)
# 4.1 将光标放在 类名 的后面运行,会执行类中的所有的测试方法
# 4.2 将光标放在 方法名 的后面运行,只执行当前的方法

2. TestSuite

TestSuite(测试套件),用来组装(打包)、管理多个TestCase(测试用例的)

"""
代码的目的:学习TestSuite(套件)模块的书写方法
"""
# 1. 导入 unittest包
import unittest

# 2. 实例化testsuite对象
from hm_08_testcase import TestDemo
from hm_09_testcase import TestDemo1

suite = unittest.TestSuite()

# 3. 使用套件对象添加用例方法
# 方法一:套件对象.addTest(测试类名('方法名'))
suite.addTest(TestDemo('test_method1'))
suite.addTest(TestDemo('test_method2'))
suite.addTest(TestDemo1('test_method1'))
suite.addTest(TestDemo1('test_method2'))
# 方法二 将一个测试类中的所有方法进行添加
# 套件对象.addTest(unittest.makeSuite(测试类名))
suite.addTest(unittest.makeSuite(TestDemo))

# 4.实例化运行对象
runner = unittest.TextTestRunner()

# 5. 使用运行对象去执行套件对象   运行对象.run(套件对象)
runner.run(suite)

3. TestRunner

TestRunner(测试执行,测试运行),用来执行TestSuite(测试套件)的

4. TestLoader

TestLoader(测试加速),功能是对TestSuite(测试套件)功能的补充,用来组装(打包)、管理多个TestCase(测试用例的)

"""
TestLoader 的使用
"""
# 1. 导包
import unittest

# 2. 实例化加载对象并添加实例
# unittest.TestLoader().discover("用例所在的路径", "用例的代码文件名")
# 用例的代码文件名 支持通配符
suite = unittest.TestLoader().discover("./case", "*")

# 3. 实例化运行对象,并执行
unittest.TextTestRunner().run(suite)

5. Fixture

Fixture(测试夹具),书写在TestCase代码中的,是一个代码结构,

5.1 方法级别

可以在每个方法执行前后都会执行的内容

# 方法执行之前

def setUp(self):

? ? ? ? 每个测试方法执行之前都会执行

# 方法执行之后

def tearDown(self):

? ? ? ? 每个测试方法执行之后都会执行

5.2 类级别

可以在每个测试类中所有方法执行前后都会执行的内容,在整个类中,执行前后各一次

类级别的Fixture方法,是一个类方法

#类中所有方法之前

@classmethod

def setUpClass(cls):

? ? ? ? pass

@classmethod

def tearDownClass(clas):

? ? ? ? pass

import unittest


class TestLogin(unittest.TestCase):
    def setUp(self):
        print("输入网址......")

    def tearDown(self):
        print("关闭网页")

    @classmethod
    def setUpClass(cls):
        print("打开浏览器")

    @classmethod
    def tearDownClass(cls):
        print("关闭浏览器")

    def test_login(self):
        print("输入正确的账户密码")

    def test_login_error(self):
        print("输入错误的账户密码")

四、UnitTest的断言

1. 断言的结果

断言的结果有两种

  • True,用例通过
  • False,代码抛出异常,用例不通过

1. 常用的UnitTest断言方法

断言方法断言描述优先级
assertTrue(expr,msg=None)验证expr是true,如果是false,则为fail
assertFalse(expr,msg=None)验证expr是flase,如果为true,则fail
assertEqual(expected,actual,msg=None)验证expected==actual,不等则fail重点
assertIn(member,container,msg=None)验证是否member in container重点

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:25:31  更:2022-05-08 08:26:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:20:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码