unittest的介绍和使用

2021-01-23  本文已影响0人  Chaweys

什么是unitest?
unitest是Python自带测试库,是单元测试框架,且提供了丰富的断言方法
unittest核心:TestFixture、TestCase、TestSuite、TestRunner

注:
1、定义测试用例,必须以"test"开头命名方法
2、unittest.main()方法会搜索该模块下所有以test开头的测试用例方法,并自动执行它们
3、setUp()和tearDown()每个用例例执行前后都会执行初始化条件和结束条件


# -*- coding:utf-8 -*-
import unittest

class UserCase(unittest.TestCase):
    def setUp(self):
        print("set Up 开始执行")

    def tearDown(self):
        print("tear Down 执行结束")

    def testcase1(self):
        print("case1")

    def testcase2(self):
        print("case2")
        self.assertEqual(1,1)

    def testcase3(self):
        print("case3")

if __name__=="__main__":
    unittest.main()


结果:
set Up 开始执行
case1
tear Down 执行结束
set Up 开始执行
case2
tear Down 执行结束
set Up 开始执行
case3
tear Down 执行结束
...                      #每个点代表一个用例方法执行成功,如果有F代表一个用例执方法行失败
----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK

unittest的进阶使用

注:
setUp()和tearDown()每个用例执行前后都会执行初始化条件和结束条件。
setUpClass()和tearDownClass()是执行所有用例时只用执行一次初始化条件和结束条件。

# -*- coding:utf-8 -*-
import unittest

class UserCase(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("set Up 开始执行")
    @classmethod
    def tearDownClass(cls):
        print("tear Down 执行结束")

    def testcase1(self):
        print("case1")

    def testcase2(self):
        print("case2")
        self.assertEqual(1,1)

    @unittest.skip("跳过该用例")
    def testcase3(self):
        print("case3")

if __name__=="__main__":
    unittest.main(verbosity=1)
"""
结果:
verbosity=1 代表输出用例执行的结果日志级别,默认是1

set Up 开始执行
case1
case2
case3
tear Down 执行结束
...
----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK



verbosity=0的结果:
set Up 开始执行
case1
case2
case3
tear Down 执行结束
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK



verbosity=2的结果:
set Up 开始执行
case1
case2
case3
tear Down 执行结束
testcase1 (__main__.UserCase) ... ok
testcase2 (__main__.UserCase) ... ok
testcase3 (__main__.UserCase) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK



加上跳过用例执行注解:@unittest.skip("跳过该用例")
set Up 开始执行
case1
case2
tear Down 执行结束
testcase1 (__main__.UserCase) ... ok
testcase2 (__main__.UserCase) ... ok
testcase3 (__main__.UserCase) ... skipped '跳过该用例'

----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK (skipped=1)

"""

ddt加载测试用例数据

import unittest
import ddt

datas=[{"a":1,"b":2,"c":3}]

@ddt.ddt
class DDTTest(unittest.TestCase):
    @ddt.data(*datas)  #注解:对datas参数进行拆分
    def test1(self,d):
        print("参数时:{0}".format(d))

if __name__ == '__main__':
    unittest.main()

结果:
.
参数时:{'a': 1, 'b': 2, 'c': 3}
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
上一篇下一篇

猜你喜欢

热点阅读