unittest的属性:

该文以思维导图的形式描述unittest的重要属性。

其中前四个是unittest最核心的三个属性。

testcase:测试用例;

testsuite:测试套件,多个测试用例组成一个测试套件;

test runner:执行测试用例,该类中的run()方法会执行testsuite/testcase中的run()方法。测试的结果会保存在testresult中。

还有一个很重要的就是fixture,看着是挺陌生的,其实就是一个测试用例执行之前环境的准备和执行之后环境的销毁。

三、实例:

首先准备一些待测方法,functions.py:

def fun_div(x):
return x/2

def fun_add(x):
return x+2

def fun_minus(x):
return x-2

def fun_multi(x):
return x*2
接下来写一些测试用例来测这些方法,test.py

import unittest
from functions import fun_add,fun_minus,fun_multi,fun_div

class TestFun(unittest.TestCase):
times = 0

@classmethod
def setUpClass(cls):
print('setUpclass')

def setUp(self):
# 每个测试用例执行之前都会执行该方法
TestFun.times += 1
print('setUp', TestFun.times)

def tearDown(self):
# 每个测试用例执行之后都会执行该方法
TestFun.times += 1
print('tearDown', TestFun.times)

def test1(self):
# 测试用例1:fun_div
# 使用unittest提供的断言验证functions中的函数的正误
# 如果不相等就会失败
self.assertEqual(2, fun_div(4))
self.failUnlessEqual(2, 2)

# 如果表达式为False,测试失败
self.assertTrue(1 < 2)
self.failUnless(2 == 2)
# 如果两个值相等,就会测试失败
self.assertNotEqual(2, 1)
def test2(self):
# 测试用例2:fun_add
self.assertNotEqual(2, 1)
def test2(self):
# 测试用例2:fun_add
self.assertTrue(fun_add(6) == 8)
def test3(self):
# 测试用例3:fun_minus
self.assertNotEqual(6, fun_minus(6))
self.assertEqual(4, fun_minus(6))
def test4(self):
# 测试用例4:fun_multi
self.assertIsInstance(4, int)
self.assertEqual(8, fun_multi(4))
@unittest.skipIf(True, 'no')
def test5(self):
print('跳过!')
@classmethod
def tearDownClass(cls):
print('tearDownClass')
if __name__ == '__main__':
# unittest.main()
suit = unittest.TestSuite()
suit.addTest(TestFun('test1'))
suit.addTest(TestFun('test2'))
suit.addTest(TestFun('test3'))
suit.addTest(TestFun('test4'))
runner = unittest.TextTestRunner()
runner.run(suit)
执行结果:

解释:

1、setUp和tearDown是每个用例的环境准备和环境销毁函数,也就是在每个用例执行之前要执行一次setUp函数,每个用例执行之后会执行一次tearDown函数;

2、setUpClass和tearDownClass是所有用例的环境准备和环境销毁函数,也就是说,在这么多用例执行之前只会执行一次setUpClass函数,执行之后会执行一次tearDownClass函数,举例来说,比如此次测试用例需要使用数据库,那么在setUpClass函数中就会进行数据库连接,在tearDownClass函数中进行数据库断开;

3、一般执行测试用例,都会使用testsuit的addTest()方法将要执行的用例放在一个测试套件中,创建一个testrunner对象,然后调用该对象的run()方法;

4、skip是一个装饰器,可以屏蔽一些测试用例,此功能可以用于调试测试用例。(大型项目中,执行所有的用例需要用很久的时间,但是我们刚好需要调试某个用例,就可以把其他的用例屏蔽掉);

5、一个测试用例类都会继承于TestCase类;

6、测试用例报告可以使用TextTestRunner输出(txt报告),也可以用HTMLTestRunner输出(html报告)。
————————————————
版权声明:本文为CSDN博主「peiyao456」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/peiyao456/article/details/81542377

python中的单元测试模块unittest的更多相关文章

  1. Python中的单元测试模块Unittest快速入门

    前言 为什么需要单元测试? 如果没有单元测试,我们会遇到这种情况:已有的健康运行的代码在经过改动之后,我们无法得知改动之后是否引入了Bug.如果有单元测试的话,只要单元测试全部通过,我们就可以保证没有 ...

  2. python中的单元测试pyUnit

    python中的单元测试pyUnit   在Python中进行单元测试时需要用到PyUnit模块,Python 2.1及其以后的版本都将PyUnit作为一个标准模块,但如果你使用的是较老版本的Pyth ...

  3. Python中的random模块,来自于Capricorn的实验室

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  4. Python中的logging模块

    http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...

  5. Python中的random模块

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  6. 浅析Python中的struct模块

    最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...

  7. python中的StringIO模块

    python中的StringIO模块 标签:python StringIO 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的,只有一个StringIO类,所以它的可用方法都在类中.此类中的大部分 ...

  8. python中的select模块

    介绍: Python中的select模块专注于I/O多路复用,提供了select  poll  epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kqu ...

  9. Python中的re模块--正则表达式

    Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...

随机推荐

  1. Jdk8中Stream流的使用,让你脱离for循环

    学习要求: 知道一点儿函数式接口和Lambda表达式的基础知识,有利于更好的学习. 1.先体验一下Stream的好处 需求:给你一个ArrayList用来保存学生的成绩,让你打印出其中大于60的成绩. ...

  2. Python面试常问的10个问题

    很多人想找Python工作,面试往往在基础知识点采坑了 Python是个非常受欢迎的编程语言,随着近些年机器学习.云计算等技术的发展,Python的职位需求越来越高.下面我收集了10个Python面试 ...

  3. xaml与CSS中的Margin顺序不同

    XAML中  Margin:左 上 右 下 CSS中      Margin:上 右 下 左

  4. Python 编写代码 检查是否遵循PEP 8标准

    实际上并非必须遵守PEP 8,但是它已经成为一个默认的.约定俗成的规则,可以使代码风格更统一,提高可读性. 由于最近一直在学习Ubuntu,因此此处仍然以Ubuntu为例,介绍一下规则检查工具,它能帮 ...

  5. P1081 检查密码

    P1081 检查密码 转跳点:

  6. mjpg-streamer视频服务器移植

    相关软件下载地址:http://pan.baidu.com/s/16yo8Y JPEG库的移植 对于内核linux-2.6.35,不能再使用servfox,如果要使用的需要修改大量的代码.在此选用新的 ...

  7. idea创建同名的maven工程时报错:Failed to create a Maven project 'xxx/pom.xml' already exists in VFS

    1.说明 原先有个 xxx 的 maven 工程,然后删掉了,又重新建了个同名的工程,而且目录也一样,结果报错: 可以在 Help ==> Show Log in Explorer 查看到以下具 ...

  8. 小程序跳坑之JSON字符串转换JSON对象

    常见的JSON字符串转换有很多,这里只讲我遇到过的小程序中用到的转换. 通常我们在小程序中用到的地方是,请求一个数据表或者请求一个接口,拿到了一堆数据,里面包含有各种字段数组,头像,图片,详情,地址, ...

  9. swoole在线聊天学习笔记

    <?php $http=); $http->on('request',function(swoole_http_request $request,swoole_http_response ...

  10. 100-PHP二维数组的元素输出三

    <?php $stu=array(array(76,87,68), array(65,89,95), array(90,80,66), array(90,95,65)); //定义一个二维数组 ...