python中unittest库的用法_python中的unittest库

unittest库

unittest库是python的内置库,用来对程序进行测试。

组成部分

名称

用途

TestCase

测试用例,执行测试时依次调用setUp(),测试用例内部方法,tearDown()

TestSuite

测试用例的集合,可以通过addTest()来添加,顺序执行内部各个测试用例

TestRunner

运行测试,可以执行TestCase和TestSuite

TestFixture

测试过程前的环境准备和后的清理,最常用的是setUp()和tearDown()

使用方法

首先要导入unittest模块,再新建一个继承unittest.TestCase的测试类,测试用例用类方法的形式编写,注意命名必须以test开头。

import unittest

class TestXXX(unittest.TestCase):

def test_xxx(self):

pass

测试环境准备

需要准备和清理测试环境时,要用到setUp()和tearDown(),还有setUpClass()和tearDownClass()。

import unittest

class TestXXX(unittest.TestCase):

@classmethod

def setUpClass(self):

pass # prepare environment for all tests

@classmethod

def tearDownClass(self):

pass # clear environment for all tests

def setUp(self):

pass # prepare environment for each test

def tearDown(self):

pass # clear environment for the test

def test_xxx(self):

pass

setUp()和tearDown()会在每个测试用例执行前后各执行一遍,而setUpClass()和tearDownClass()只会执行一次,分别在整个测试流程开始和结束时。

执行测试

if __name__ == '__main__':

unittest.main()

这是最简单的执行测试的方法,会执行所有的测试用例。

TestSuite的使用

在测试类中我们可能定义多个测试用例,但是执行时他们不会按照定义时的顺序执行,而是按照方法名的顺序,可能不是我们想要的情况。这时就要用到TestSuite来限制执行的顺序。它还能用来选择执行哪些测试用例。

if __name__ == '__main__':

suite = unittest.TestSuite()

tests = [

TestXXX('test_xxx'),

TestXXX('test_yyy'),

TestXXX('test_zzz')

]

suite.addTests(tests)

runner = unittest.TextTestRunner(verbosity=2)

runner.run(suite)

这样我们就可以限定执行哪些测试,以什么顺序执行。还可以用addTest()添加测试用例。这里还用到了TestRunner,其中的verbosity参数表示展示测试结果的详细程度,0最简略,2最详细。

跳过某些测试用例

如果我们希望在特定条件下跳过或执行某个测试用例,unittest提供了一些跳过测试用例的方法。

方法

用法

@unittest.skip(reason)

强制跳过,reason是跳过原因

@unittest.skipIf(condition, reason)

condition为True的时候跳过

@unittest.skipUnless(condition, reason)

condition为False的时候跳过

@unittest.expectedFailure

如果test失败了,这个test不计入失败的case数目

import unittest

class TestXXX(unittest.TestCase):

@classmethod

def setUpClass(self):

pass # prepare environment for all tests

@classmethod

def tearDownClass(self):

pass # clear environment for all tests

def setUp(self):

pass # prepare environment for each test

def tearDown(self):

pass # clear environment for the test

def test_xxx(self):

pass

@unittest.skip('Skip this test case.')

def test_yyy(self):

pass # 这个测试用例不会被执行

def test_zzz(self):

pass

判定方法

unittest提供了很多断言,来判断测试是否成功。

断言

含义

self.assertEqual(a,b)

a==b

self.assertNotEqual(a,b)

a!=b

self.assertTrue(x)

x is True

self.assertFalse(x)

x is False

self.assertIn(a,b)

a in b

self.assertNotIn(a,b)

a not in b

也可以直接assert接布尔表达式来判断,例如assert a==1。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值