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之单元测试 -> 正文阅读

[开发测试]Python之单元测试

Python之单元测试

典型的单元测试步骤
  1. 创建测试计划
  2. 编写测试用例,准备测试数据
  3. 编写测试脚本
  4. 编写被测代码,代码完成后执行测试脚本
  5. 修正代码缺陷,重新测试直到代码修正结束

让测试驱动开发

一、Python的单元测试框架PyUnit(unittest)

  • 是Python的标准库

1. 测试固件(test fixtures)

  • 测试相关的准备工作和清理工作
    • setUp():完成初始化工作
    • tearDown():资源释放
# 被测试类 myClass.py
class MyClass(object):
	def add(self, a, b):
		return a+b
	def sub(self, a, b):
		return a-b
  • 测试用例, testMyClass.py
import unittest

from myClass import MyClass

class MyClassTest(unittest.TestCase):
	def setUp(self):
		print("Runnging setUp")
		self.myclass = MyClass()
	def tearDown(self):
		print("Running tearDown")
		self.mycalss = None
	
	def testAdd(self):
		self.assertEqual(self.myclass.add(1, 3), 4)
	def testSub(self):
		self.assertEqual(self.myclass.sub(1, 3), -2)

执行结果
在这里插入图片描述

2. 测试用例(test case)

上述实验就是一个测试用例

  • TestCase子类的实例作为测试用例

3. 测试用例集(test suite)

将多个测试用例组织,放在TestSuite中,自动在一次测试中全部完成

if __name__ == '__main__':
	# 构建测试集
	suite = unittest.TestSuite()
	suite.addTest(MyClassTest("testAdd"))
	suite.addTest(MyClassTest("testSub"))

4. 测试运行器(test runner)

if __name__ == '__main__':
	# 构建测试集
	suite = unittest.TestSuite()
	suite.addTest(MyClassTest("testAdd"))
	suite.addTest(MyClassTest("testSub"))

	# 执行测试
	runner = unittest.TextTestRunner()
	runner.run()

执行结果
在这里插入图片描述

缺点

  • setUp()和tearDown()只是在TestCase层面上提供,每个测试用例执行,都会运行一遍,如果模块很多时,创建环境和清理环境会带来大量工作
  • 没有插件机制进行扩展,比如增加测试覆盖统计特性就很困难

二、 nose

1. 优点

  • 定义了插件机制,默认自带coverage插件
  • 会自动发现测试用例,并执行
  • 与unittest测试用例兼容
  • 配置和清理函数可以放在__init__.py、模块、测试用例中,解决了不同层次的测试需要的配置和清理需求
  • 与setuptools的集成更友好,提供了Nose.collector作为通过的测试套件,可针对不同项目编写不同套件

2. 使用

因为是第三方库,需要先安装
pip install nose

简单样例:

import nose

def test_nose():
	pass

if __name__ == "__main__":
	nose.runmodule()

执行结果
在这里插入图片描述

3. 缺点

  1. gitlab上上一次维护是2016年了,作为第三方库,emmm。。。
    在这里插入图片描述
  2. nose2继承nose,但是node2不支持nose的全部功能

三、pytest

1. 优点

  • assert断言失败时会输出详细信息
  • 能自动发现测试模块和函数
  • 完全兼容unittest,基本兼容nose
  • 插件丰富,且可自定义扩展
  • 入门简单,各种文档也比较多
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章           查看所有文章
加:2021-08-02 11:05:29  更:2021-08-02 11:06:20 
 
开发: 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 20:39:52-

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