1、unittest框架介绍

unittest是Python自带单元测试框架,提供丰富的用例管理、执行和断言操作。

2、unittest框架常用组件

(1)TestCase,测试用例,继承于TestCase的类或者TestCase的实例就是一个测试例。在unittest中表示测试用例的方法都必须以test开头才能被执行,各个方法之间的执行顺序按照ASCII值排序。

import unittest
class TestDemo(unittest.TestCase):def test_case(self):print('测试用例方法......')def non_test(self):# 非test开头的测试用例在测试执行时不会被执行print('非测试用例方法')if __name__ == '__main__':# 执行测试用例unittest.main()

(2)TextFixture, 测试夹具。用于测试用例执行前前置条件的准备与执行完毕后的处理。提供以下常用方法:

·setUp(),表示每个测试用例执行前进行的操作

·tearDown(),表示每个测试用例执行完毕之后的操作

·setUpClass(),类方法,表示所有测试用例执行之前的操作,只执行一次

·tearDownClass(),类方法,表示所有测试用例执行完毕之后的操作,只执行一次

import unittestclass TestDemo(unittest.TestCase):@classmethoddef setUpClass(cls) -> None:print('running setUpClass...')def setUp(self) -> None:print('running setUp...')def tearDown(self) -> None:print('running tearDown...')@classmethoddef tearDownClass(cls) -> None:print('running tearDownClass...')def test_case(self):print('测试用例方法......')if __name__ == '__main__':unittest.main()

(3)TestSuite,测试套件,把需要执行的测试用例放在一起。有两种常用方式来创建测试套件。

·使用TestSuite类直接构建

suit = unittest.TestSuite(tests=()) 直接传入要执行的测试用例tests, tests必须是一个包含单独测试用例的可迭代对象或者其他测试套件 如:

suit = unittest.TestSuite((TestDemo.test_case,))

·使用TestSuite类实例对象的addTest()与addTests()方法构建

addTest() ,一次只能添加一条测试用例

suit = unittest.TestSuite()
suit.addTest(TestLogin('test_1'))  # 添加TestLogin类的test_

addTests()  一次可以添加多条测试用例

suit = unittest.TestSuite()
# 添加TestLogin类的test_1 test_2
suit.addTests([TestLogin('test_1'), TestLogin('test_2')])  

(4)TestRunner,测试执行器 执行测试用例,并返回测试用例的执行结果,还能将结果以HTML或者Text形式展示出来。即HTMLTestRunner与TextTestRunner

·HTMLTestRunner

# 以HTML形式显示测试报告
# 1、创建执行器
runner = HTMLTestRunner( stream=xxx ,  # 指定输出方式 tester=xxx ,   # 测试人员     description=xxx ,  # 测试报告描述信息 title=xxx ,  # 测试报告标题 verbosity=num ,  # 测试报告详细程度, 有3个值(0 1 2默认2(最详细)) ) # 2、启动执行器运行测试用例, suit即上文装载了测试用例的TestSuite
runner.run(suit)

·TextTestRunner

# 以Text形式显示测试报告
# 1、创建执行器
runer = TextTestRunner( stream=xxx, # 指定输出方式(默认为None, 输出到控制台) # 输出到文件 with open('file',''wb) as file_name, stream=file_name                  verbosity=num ,  # 测试报告详细程度, 有3个值(0 1 2默认2(最详细)) description=xxx ,  # 测试报告描述信息
) # 2、启动执行器运行测试用例
runner.run(suit)

(5)TestLoader,测试装载器,用来将TestCase添加到TestSuite中,有以下几种常用方式         ·loadTestsFromTestCase()  通过类名将测试用例添加到测试套件中

suit = unittest.TestLoader().loadTestsFromTestCase(TestCaseClass)

·loadTestsFromModule()  通过模块名将测试模块添加到测试套件中

suit = unittest.TestLoader().loadTestsFromModule(TestCaseModuleName)

·loadTestsFromName()  通过名字将测试用例添加到测试套件中,可以是模块,测试用例类或者测试用例类中测试方法

suit = unittest.TestLoader().loadTestsFromName(class.method)
suit = unittest.TestLoader().loadTestsFromName(module.class)
...

·loadTestsFromNames()  将序列中的测试用例添加到测试套件中

suit = unittest.TestLoader().loadTestsFromNames(['test_1', 'tesst_2' [,...]])

·discover() 将指定路径下指定开头的文件添加到测试套件中(也可以使用unittest中的defaultTestLoader的discover方法)

suit = unittest.TestLoader().discover( start_dir=xxx ,   # 测试用例所在路径 pattern=xxx ,   # 匹配规则,符合条件的加入到TestSuite中 top_level_dir=xxx ,  # 顶层目录名称,默认None
)# 执行测试用例
runner = unittest.TextTestRunner()
runner.run(suit)

3、断言

断言在测试中用来判断实际结果与预期结果是否相等,在unittest框架中,可以使用Python自带的断言,也可以使用unittest框架中的断言。

·Python中断言 直接使用 assert 表达式即可

·unittest中断言

assertEqual(a, b,msg=None)
assertNotEqual(a, b,msg=None)
assertIn(a, b) ...

4、其他

(1) skip装饰器

skip装饰器可以跳过某些测试用例,skip主要有四种用法:

·@unittest.skip(reason) 无条件跳过,reason描述跳过的原因

·@unittest.skipIf(condition, reason) 有条件跳过,当条件满足时跳过该测试用例

·@unittest.skipUnless(condition, reason) 有条件跳过,当condition条件不满足时跳过该测试用例

·@unittest.exceptedFailure 用于标记期望执行失败的测试方法,如果该测试方法执行失败则被认为成功,如果执行成功则被认为是失败。

5、一个例子

import unittestclass TestLogin(unittest.TestCase):def setUp(self) -> None:# 创建套件,每次执行用例前都会执行一次print("测试用例执行前准备条件...")def test_name(self):# 创建第一个测试方法assert 'Tom' == 'Bob'def test_id(self):# 创建第二个测试方法self.assertEqual('2983', '2983')@unittest.skipIf('test' in 'python test', reason='满足条件跳过该用例')def test_time(self):self.assertNotEqual('B','C')if __name__ == '__main__':# 创建测试套件,并装载测试用例suit = unittest.TestLoader().loadTestsFromTestCase(TestLogin)# 创建执行器runner = unittest.TextTestRunner(stream=None,  # 输出到终端descriptions='unittest 测试框架',verbosity=2)# 执行测试用例runner.run(suit)

Unittest框架介绍及常用组件相关推荐

  1. Unittest框架介绍

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  2. 大数据分析常用组件、框架、架构介绍(Hadoop、Spark、Storm、Flume、Kafka、Logstash、HDFS、HBase)

    在正式开始介绍大数据知识之前我们先来了解一下一些大数据常用名词,如果您是"过来人"的话,可以直(jia)接(shen)跳(yin)过(xiang):如果您是新手的话,可以带着对新鲜 ...

  3. python中的UnitTest框架

    一.UnitTest框架介绍 框架说明: 1.框架英文单词framework 2.为解决一类事情的功能集合 〉需要按照框架的规定(套路)去书写代码 什么是UnitTest框架? 概念:UnitTest ...

  4. unittest框架以及原理介绍

    一.单元测试 单元测试的定义 1: 什么是单元测试? 按照定义:单元测试就是对单个模块或者是单个类或者是单个函数进行测试,一般是开发做的,按照阶段来分,一般就是单元测试,集成测试,系统测试,验收测试. ...

  5. OS开发-常用第三方开源框架介绍

    为什么80%的码农都做不了架构师?>>>    OS开发-常用第三方开源框架介绍 http://blog.csdn.net/meiwenjie110/article/details/ ...

  6. Java常用的5大框架介绍!

    作为常年霸榜的头牌编程语言,Java的火热程序已经毋庸置疑,Java框架在Java开发中的作用也是不可忽视.下面,小千给大家具体介绍一下Java常用的5大框架,希望对正在学习Java的人有所帮助. 1 ...

  7. Java常用日志框架介绍

    Java常用日志框架介绍 文章目录 Java常用日志框架介绍 日志接口和日志框架的区别 各个框架出现的时间线 桥接包 Log4j2 常用搭配 单独的log4j 使用JCL(commons-loggin ...

  8. 常用json框架介绍和Jackson返回结果处理

    常用json框架介绍和Jackson返回结果处理     简介:介绍常用json框架和注解的使用,自定义返回json结构和格式 1.常用框架 阿里 fastjson,谷歌gson等         J ...

  9. Unity3damp;amp;C#分布式游戏服务器ET框架介绍-组件式设计

    前几天写了<开源分享 Unity3d客户端与C#分布式服务端游戏框架>,受到很多人关注,QQ群几天就加了80多个人.开源这个框架的主要目的也是分享自己设计ET的一些想法,所以我准备写一系列 ...

最新文章

  1. 卧槽!什么神仙行业月入10万,人才缺口30万?
  2. 网络字节序,主机字节序,地址转换函数
  3. BZOJ 2820 莫比乌斯反演
  4. MySQL笔记11:C语言编程API函数和完整实例演示!
  5. ConvertFrom-String 命令研究
  6. java 生成bat_java实现生成windows可执行的批处理文件(.bat)
  7. java 怎么从性能上优化代码_月薪上万做好这一步:程序员职场中必须掌握的的Java代码性能优化技巧...
  8. 电脑安装ubuntu linux操作系统
  9. python+opencv中最近出现的一些变化( OpenCV 官方的 Python tutorial目前好像还没有改过来?) 记一次全景图像的拼接...
  10. Mac下Alt键配置
  11. rpc调用过程原理分析以及Dubbo、Feign调用过程
  12. ArcGIS数据生产与精细化制图之中国年降水量分布图的制作
  13. Docker下安装部署MsSql
  14. 站长必备:在线设计生成LOGO
  15. 设计师学python有什么用_Python是个什么鬼?为什么设计大牛都在学它?!
  16. TextView 跑马灯效果
  17. STM32——跑马灯实现
  18. JavaSE——柏羲
  19. 服务器被ddos攻击的处置策略
  20. android 区分 真机模拟器_Android模拟器和真机总结的九点区别 Android程序如何在手机上运行...

热门文章

  1. Vue+Element-UI 使用 Vform 表单设计器
  2. Rhinoceros 建模简介1
  3. java三国英杰传_如何看待三国英杰传这部早期游戏作品?
  4. 2017百度之星作死记
  5. 如何制作 ChatGPT 清晰有效咒语与Chat GPT高效交流——基础篇 第二课
  6. ROS笔记(33) 关节空间规划
  7. ROS软路由 IPSec配置
  8. msvcp110.dll丢失修复问题,哪种方便比较靠谱?
  9. 微信中点击下载链接提示无效的解决方案
  10. 2023年铜川宜宾半程马拉松赛-人生首次半马比赛