python—unittest接口测试框架

2019-10-11  本文已影响0人  小二哥很二
一、unittest初级使用

单元测试中最核心的四个概念:test case(测试用例),test suite(测试套件),test runner(测试运行器),test fixture(测试环境数据准备和数据清理或者测试脚手架)

※test case:一个testcase的实例就是一个测试用例。测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)

※TestSuite:多个测试用例集合在一起。

※TestLoader:用来加载Testcase到TestSuite中。

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

※test fixture:测试用例环境的搭建和销毁

1.在创建一个新类时,会继承unittest.TestCase。重写setUp和tearDown方法时,再调用unittest.main()执行用例,setUp和tearDown会在每条用例前后都执行:

import unittest

class TestBaidu(unittest.TestCase):

    #每执行一个用例,都会执行setup()和teardown()方法
    #如果跑所有用例,只运行一次前提条件和结束条件。则用setupclass()和teardownclass()
    def setUp(self):
        print("测试用例执行前的初始化操作========")

    def tearDown(self):
        print("测试用例执行完之后的收尾操作=====")

    def test_add(self):
        print(5+7)

    def test_sub(self):
        print(3-2)
if __name__ == '__main__':
    unittest.main()

运行结果:
>>
结果:
测试用例执行前的初始化操作========
12
测试用例执行完之后的收尾操作=====
测试用例执行前的初始化操作========
1
测试用例执行完之后的收尾操作=====
<<

2.设置setupClass和teardownClass:执行所有测试用例,仅执行一次初始化条件和结束条件(如下代码可以看到,两个测试用例只执行了一次):

import unittest

class TestBaidu(unittest.TestCase):

    #如果跑所有用例,只运行一次前提条件和结束条件。则用setupclass()和teardownclass()
    @classmethod
    def setUpClass(cls):
        print("在所有的测试用例执行之前,只执行一次============")

    @classmethod
    def tearDownClass(cls):
        print("在所有的测试用例执行之后,只执行一次============")

    def test_add(self):
        print(5+7)

    def test_sub(self):
        print(3-2)

#python3中写不写都会执行的
if __name__ == '__main__':  
    unittest.main()

运行结果:
>>
Testing started at 22:19 ...
在所有的测试用例执行之前,只执行一次============
12
1
在所有的测试用例执行之后,只执行一次============
<<
二、testsuit使用
import unittest

class TestBaidu(unittest.TestCase):
    def test01(self):
        print('test01测试...')

    def test02(self):
        print('test02测试...')

    def test03(self):
        print('test03测试...')

if __name__ == '__main__':
    suit=unittest.TestSuite()                  #创建测试集
    suit.addTest(TestBaidu('test01'))          #测试集中添加需要运行的测试用例
    suit.addTest(TestBaidu('test02'))
    #suit.addTest([TestBaidu('test01'),TestBaidu('test02')]) 
    runner=unittest.TextTestRunner()           #用来执行测试用例
    runner.run(suit)
三、unittest.TestLoader.discover匹配目录下的所有用例,目录下的用例名称需要以test开头
import unittest
import os

#实例化测试套件对象
suit = unittest.TestSuite()
#实例化TestLoader的对象
loader = unittest.TestLoader()
#使用discover()去找一个目录下的所有测试用例的文件,并将返回数据添加到测试套件中。
s.addTests(loader.discover(os.getcwd()))
run = unittest.TextTestRunner()
run.run(s)
上一篇下一篇

猜你喜欢

热点阅读