美文网首页
python—unittest接口测试框架

python—unittest接口测试框架

作者: 小二哥很二 | 来源:发表于2019-10-11 12:25 被阅读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)

    相关文章

      网友评论

          本文标题:python—unittest接口测试框架

          本文链接:https://www.haomeiwen.com/subject/etktmctx.html