unittests相关内容

一、什么是unittest

unittest是Python单元测试框架,类似于JUnit框架。

unittest中有4个重要的概念:test fixture, test case, test suite, test runner

Testcase:

一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码 (run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。

TestSuite:

多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。

Test runner:

是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。

TestLoader:

是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例。

Test fixture:

对一个测试用例环境的搭建和销毁,是一个fixture,通过覆盖 TestCase的setUp()和tearDown()方法来实现。这个有什么用呢?比如说在这个测试用例中需要访问数据库,那么可以在setUp() 中建立数据库连接以及进行一些初始化,在tearDown()中清除在数据库中产生的数据,然后关闭连接。注意tearDown的过程很重要,要为以后的 TestCase留下一个干净的环境。关于fixture,还有一个专门的库函数叫做fixtures,功能更加强大。

二、unittest模块的常用方法

1.判断结果是否相同

assertEqual(a, b)     a == b

2.判断结果是否不相同

assertNotEqual(a, b)     a != b

3.判断结果是否为ture

assertTrue(x)     bool(x) is True

4.判断结果是否为false

assertFalse(x)     bool(x) is False

5.判断结果a是否为b

assertIs(a, b)     a is b

6.判断结果a是否不为b

assertIsNot(a, b)     a is not b

7.判断结果是否为空

assertIsNone(x)     x is None

8.判断结果是否不为空

assertIsNotNone(x)     x is not None

9.判断结果是否在这些数据里

assertIn(a, b)     a in b

10.判断结果是否不在这些数据里

assertNotIn(a, b)     a not in b

11.判断a是否为b的一个实例

assertIsInstance(a, b)     isinstance(a, b)

12.判断a是否不为b的一个实例

assertNotIsInstance(a, b)     not isinstance(a, b)

三、简单用法

1.用import unittest导入unittest模块

2.定义一个继承自unittest.TestCase的测试用例类,如class xxx(unittest.TestCase):

3.定义setUp和tearDown,这两个方法与junit相同,即如果定义了则会在每个测试case执行前先执行setUp方法,执行完毕后执行tearDown方法。

4.定义测试用例,名字以test开头,unittest会自动将test开头的方法放入测试用例集中。

5.一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。

6.调用unittest.main()启动测试

7.如果测试未通过,则会显示e,并给出具体的错误(此处为程序问题导致)。如果测试失败则显示为f,测试通过为.,如有多个testcase,则结果依次显示

四、setUp和tearDown,setUpClass和tearDownClass

 

posted @ 2021-06-23 16:49  阿飞~HF  阅读(54)  评论(0编辑  收藏  举报