| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 浅谈unitest测试框架 -> 正文阅读 |
|
[开发测试]浅谈unitest测试框架 |
一 前言? ? ? ? ? 单元测试对软件开发来说也是相当重要,好的软件项目离不开单元测试。当然单元测试也是一项复杂的工程,在复杂的环境软件环境中,手写单元测试相当困难,所以学习一种好的测试框架对程序员来说非常必要。下面聊聊python 的基础测试框架unitest。 二 特性简介? ? ? ? 三 uniteest核心原理unittest最核心的四部分是:测试用例TestCase,测试套件TestSuite,测试运行器TestRunner,测试脚手架TestFixture TestCase:一个独立的测试单元,检查输入特定的数据时的响应,需要继承unittest提供的基类:TestCase TestSuite:测试用例集合,可以通过addTest()方法手动增加Test Case,也可以通过TestLoader自动添加Test Case,TestLoader在添加用例时,会没有顺序。 TestRunner:运行测试用例的驱动类,用于执行和输出测试结果的组件,可以执行TestCase,也可以执行TestSuite,执行后TestCase和TestSuite会自动管理TESTResult。 TestFixture:简单来说就是做一些测试过程中需要准备的东西,比如创建临时的数据库,文件和目录等,每个测试用例运行时都会调用一次setUp()、tearDown()、init() 整个的流程就是首先要写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TestTestRunner来运行TestSuite,运行的结果保存在TextTestReusult中,整个过程集成在unittest.main模块中。 ? demo ? ? ?上面的代码演示了如何编写一个简单的测试,下面说一下怎么控制用例执行的顺序。我们就要用到TestCase,添加到TestCaseDE中的case是会按照添加的顺序执行的。并将结果输出到文件 ?HTMLTestRunner python3版本安装 ?pip install HTMLTestRunner-Python3 ? 四 unitest 进阶?return_vaulemock?对象的?return_vaule?的作用:它将忽略?mock?对象的行为,指定其返回值。 mock可以添加为实现的方法 ? side_effectmock?对象的side_effect 的作用:通过side_effect指定mock对象的副作用,这个副作用就是当你调用这个mock对象时会调用的函数,也可以选择抛出一个异常,来对程序的错误状态进行测试,指定为list等 patch装饰器它是一个装饰器,需要把你想模拟的函数写在里面,然后在后面的单元测试案例中为它赋一个具体实例,再用 return_value 来指定模拟的这个函数希望返回的结果就可以了 ?@mock.pathc(模块名.“函数名”) ?如果 patch 多个外部函数,那么调用遵循自下而上的规则,比如: ? 五? ?前置后置测试代码import unittest class TestFixtures01(unittest.TestCase): # 所有用例执行前执行 def setUp(self) -> None: print("setUp开始") def tearDown(self) -> None: print("tearDown结束") # 每条用例执行前执行 @classmethod def setUpClass(cls) -> None: print("setUpClass开始") ????在一个单独类的测试完成运行之后被调用的类方法??? @classmethod def tearDownClass(cls) -> None: print("tearDownClass结束") # 测试用例 def test_001(self): print("测试用例001") class TestFixtures02(unittest.TestCase): def test_002(self): print("测试类2") # 每个模块执行前执行 def setUpModule(): """ 在所有测试类在调用之前会被执行一次,函数名是固定写法,会被unittest框架自动识别 """ print('集成测试 >>>>>>>>>>>>>>开始') def tearDownModule(): print("集成测试 >>>>>>>>>>>>>>结束") if __name__ == '__main__': unittest.main() |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/18 2:26:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |