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 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 【Python基础】第二十一篇 | unittest框架之组件及使用方法 -> 正文阅读

[开发测试]【Python基础】第二十一篇 | unittest框架之组件及使用方法

UnitTest框架:

介绍

  • 1.框架:

    说明:1.框架Framework
    2.为解决一类事情的功能集合
    需要按照框架的规定(套路)去书写代码

  • 2.什么是unittest框架

概念:unittest是Python自带的一个单元测试框架,用它来做单元测试
自带的框架:不需要单外安装,只要安装了Python,就可以使用

第三方:想要使用需要先安装使用pytest
单元测试框架:主要用来做单元测试,一般单元测试是开发做的

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

  • 3.为什么使用unitest框架

能够组织多个用例去执行
提供丰富的断言方法(让程序代码代替人工自动的判断结果和实际结果是否相符)
能够生成测试报告

  • 4.unitest核心要素(unittest的组成)

TestCase(最核心的模块)
TestCase(测试用例),注意这个测试用例是unittest框架组成部分,
不是手工和自动化中我们所说的用例(Test Case)
主要作用:每个TestCase(测试用例)都是一个代码文件,在这个代码文件中
来书写真正的用例代码
TestSuite
TestSuite(测试套件),用来管理组装(打包)多个TestCase(测试用例)的
TestRunner
TestRunner(测试执行,测试运行),用来执行TestSuite(测试套件)的
TestLoader
TestLoader(测试加载),功能是对TestSuite(测试套件)功能的补充,管理
组装(打包)多个TestCase(测试用例)的
Fixture
Fixture(测试夹具),书写TestCase(测试用例)代码中,是一个代码结构,
可以在每个方法执行前后都会执行的内容

举例:
登录的测试用例,每个用例中重复的代码就可以卸载Fixture代码结构中,
只写一遍
1.打开浏览器
2.输入网址

UnitTest的组件的使用方法:

TestCase

1、是一个代码文件,在代码文件中,来书写真正的用例代码
2、代码文件的名字必须按照标识符的规则来书写(可以将代码的作用在文件的开头使用注释说明)
步骤:
1.导包(unittest)
2.自定义测试类,需要继承unittest模块中的TestCase类即可
3.书写测试方法
4.执行用例(方法)
代码:
1.导包(unittest)
import unittest
2.自定义测试类,需要继承unittest模块中的TestCase类即可
class TestDemo(unittest.TestCase)
3.书写测试方法,即用例代码,目前没有真正的用例代码,使用print代替
# 书写要求,测试方法,必须以test_开头(本质是以test开头)
def test_mothod1(self):
print(‘测试方法1’)
def test_mothod2(self):
print(‘测试方法2’)
4.执行用例(方法)
4.1 将光标放在类名的后边运行,会执行类中的所有的测试方法
4.2 将光标放在方法名的后边运行,只执行当前的方法

代码实现:
testcase1.py

'''
学习TestCase的使用
'''
#1.导包(unittest)
import unittest
#2.自定义测试类,需要继承unittest模块中的TestCase类即可
class TestDemo1(unittest.TestCase):
    #3.书写测试方法,即用例代码,目前没有真正的用例代码,使用print代替
    # 书写要求,测试方法,必须以test_开头(本质是以test开头)
    def test_mothod1(self):
        print('测试方法1')
    def test_mothod2(self):
        print('测试方法2')

在这里插入图片描述
testcase2.py

'''
学习TestCase的使用
'''
#1.导包(unittest)
import unittest
#2.自定义测试类,需要继承unittest模块中的TestCase类即可
class TestDemo2(unittest.TestCase):
    #3.书写测试方法,即用例代码,目前没有真正的用例代码,使用print代替
    # 书写要求,测试方法,必须以test_开头(本质是以test开头)
    def test_mothod3(self):
        print('测试方法3')
    def test_mothod4(self):
        print('测试方法4')

在这里插入图片描述

代码书写常见的错误
问题1:代码文件的命名不规范
1.代码文件的名字以数字开头
2.代码文件名字中有空格
3.代码文件名字有中文
4.其他的特殊符号
解决方法:文件名采用(数字、字母、下划线组成、不能以数字开头)
问题2 代码运行没有结果
右键运行没有unitests for的提示,出现的问题
解决方案:
方案1,重新新建一个代码文件,将写好的代码复制进去
方案2,删除已有的运行方式
问题3 没有找到用例
测试方法中不是以test_开头的,或者单词写错了

TestSuite&TestRunner

TestSuite(测试套件):管理 打包 组装 TestCase(测试用例)文件的
TestRunner(测试执行):执行TestSuite(套件)
步骤:
    1.导包(unittest)
    2.实例化(创建对象)套件对象
    3.使用套件对象添加用例方法
    4.实例化运行对象
    5.使用运行对象去执行套件对象

代码实现
方法1:test_suite1.py

'''
学习 TestSuite和TestRunner的使用
'''
#1.导包(unittest)
import unittest
from unittest import runner
#2.实例化(创建对象)套件对象
from testcase1 import TestDemo1
from testcase2 import TestDemo2
suite = unittest.TestSuite()
#3.使用套件对象添加用例方法
# 方式1,套件对象.addTest(测试类名('方法名'))  #建议测试类名和方法名直接去复制,不要手写
suite.addTest(TestDemo1('test_mothod1'))
suite.addTest(TestDemo1('test_mothod2'))
suite.addTest(TestDemo2('test_mothod3'))
suite.addTest(TestDemo2('test_mothod4'))
#4.实例化运行对象
runner = unittest.TextTestRunner()
#5.使用运行对象去执行套件对象
# 运行对象.run(套件对象)
runner.run(suite)

在这里插入图片描述

方法2:test_suite2.py

'''
优化 TestSuite和TestRunner的使用
'''
#1.导包(unittest)
import unittest
from unittest import runner
#2.实例化(创建对象)套件对象
from testcase1 import TestDemo1
from testcase2 import TestDemo2
suite = unittest.TestSuite()
#3.使用套件对象添加用例方法
# 方式2,将一个测试类中的所有方法进行添加
# 套件对象.addTest(unittest.makeSuite(测试类名))
# 缺点makeSuite() 不会提示
suite.addTest(unittest.makeSuite(TestDemo1))
suite.addTest(unittest.makeSuite(TestDemo2))
#4.实例化运行对象
runner = unittest.TextTestRunner()
#5.使用运行对象去执行套件对象
# 运行对象.run(套件对象)
runner.run(suite)

在这里插入图片描述

TestLoader

TestLoader(测试加载),作用和TestSuite的作用是一样的。
对TestSuite功能的补充。用例组装测试用例
比如:
如果TestCase的代码文件有很多(10,20,30)
使用步骤
1.导包
2.实例化测试加载对象并添加用例 —>得到的是suite对象
3.实例化运行对象
4.运行对象执行套件对象

代码实现
新建case文件夹,里面放入测试文件
在这里插入图片描述
testloader.py

'''
TestLoader的使用
'''
#1.导包
import unittest
from unittest import runner
from unittest import suite
#2.实例化测试加载对象并添加用例 
# unittest.TestLoader().discover("用例所在的路径","用例的代码文件名")
# 用例所在的路径,建议使用相对路径,用例的代码文件名可以使用*(任意多个任意字符)通配符
suite = unittest.TestLoader().discover("./case",'hm*.py')
#3.实例化运行对象
runner = unittest.TextTestRunner()
#4.运行对象执行套件对象
runner.run(suite)

# 可以将3.4步合并
#unittest.TextTestRunner().run(suite)

在这里插入图片描述

Fixture

Fixture(测试夹具)是一种代码结构
在某些特定的情况下,会自动执行

- 方法级别

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

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

- 类级别

在每个测试类中所有方法执行前后都会自动调用的结构(在整个类中执行之前执行之后执行一次)

 类级别的fixture方法,是一个类方法
# 类中所有方法之前
@classmethod
def setUpClass(cls):
    pass
#类中所有方法之后
@classmothod
def tearDownClass(cls):
    pass

- 模块级别

模块:代码文件
在每个代码文件执行前后执行的代码结构

#模块级别的需要卸载类的外边直接定义函数即可
# 代码文件之前
def setUpModule():
    pass
# 代码文件之后
def tearDownModule():
    pass

方法级别和类级别的前后的方法,不需要同时出现,根据用例代码的需要自行的选择使用

代码实现
test_Fixture.py

'''
案例
1.打开浏览器(整个测试过程中就打开一次浏览器)类级别
2.输入网址(每个测试方法都需要一次)方法级别
3.输入用户名密码验证码点击登录(不同浏览器数据)测试方法
4.关闭当前页面(每个测试方法都需要一次)方法级别
5.关闭浏览器(整个测试过程中就关闭一次浏览器)类级别
'''
import unittest
class TestLogin(unittest.TestCase):
    def setUp(self) -> None:
        '''每个测试方法执行之前都会先调用的方法'''
        print('输入网址...')
    
    def tearDown(self) -> None:
        '''每个测试方法执行之后都会先调用的方法'''
        print('关闭当前页面...')
    @classmethod
    def setUpClass(cls) -> None:
        print('------1.打开浏览器')

    @classmethod
    def tearDownClass(cls) -> None:
        print('------5.关闭浏览器')

    def test_1(self):
        print('输入正确用户名密码验证码,点击登录 1')
    def test_2(self):
        print('输入错误用户名密码验证码,点击登录 2')

在这里插入图片描述

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 12:09:15  更:2022-04-28 12:09:49 
 
开发: 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年5日历 -2024/5/19 7:52:30-

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