• 1-UnitTest框架


    1-什么是UnitTest框架

    概念:UnitTest框架是专门用来进行执行代码测试的框架

    2-为什么要使用UnitTest框架?

    • 能够组织多个用例去执行
    • 提供丰富的断言方法
    • 提供丰富的日志与测试结果

    3-UnitTest核心要素

    1. TestCase
    2. TestSuite
    3. TextTestRunner
    4. Fixture

    3.1-TestCase

    点击查看代码
    说明:(翻译:测试用例)一个TestCase就是一条测试用例;
    使用:
        1. 导包:import unittest             --> 导入unitest框架
        2. 继承:unittest.TestCase             --> 新建测试类继承unittest.TestCase
    
    提示:
        1). 测试用例:在自动化测试中,一条用例就是一个完整的测试流程;                
        2). 测试方法名称命名必须以test开头;
           (原因:unittest.TestCase类批量运行的方法是搜索执行test开头的方法)

     

    3.2-TestSuite (翻译:测试套件)

    点击查看代码
    说明:多条测试用例集合在一起,就是一个TestSuite;
    使用:
        1. 实例化:     suite = unittest.TestSuite()           ——>(suite:为TestSuite实例化的名称)          
    
        2. 添加用例:suite.addTest(ClassName("MethodName"))    ——>(ClassName:为类名;MethodName:为方法名)         
                     
    
        3. 添加扩展:suite.addTest(unittest.makeSuite(ClassName))
                     (搜索指定ClassName内test开头的方法并添加到测试套件中)
    
    提示:
        1). 一条测试用例(.py)内,多个方法也可以使用测试套件
        2). TestSuite需要配合TextTestRunner才能被执行

    3.3-TextTestRunner    (翻译:执行测试用例)

    点击查看代码
    说明:是用来执行测试用例套件
    使用:
        1. 实例化: runner=unittest.TextTestRunner()    ——>(runner:TextTestRunner实例化名称)
    
        2. 执行:    runner.run(suite)                  ——>(suite:为测试套件名称)

    3.4-Fixture

    点击查看代码
    说明:是一个概述,对一个测试用例环境的搭建和销毁就是一个Fixture;
    
    使用:
        1. 初始化(搭建):def setUp(self)            --> 首先执行
           (setUp:此方法继承于unittest.TestCase)   
           
        2. 结束(销毁):    def tearDown(self)        --> 最后执行
           (tearDown:此方法继承于unittest.TestCase)
           
    提示:
        1. 必须继承unittest.TestCase类,setUp、tearDown才是一个Fixture;
        2. setUp:一般做初始化工作,比如:实例化浏览器、浏览器最大化、隐式等待设置
        3. tearDown:一般做结束工作,比如:退出登录、关闭浏览器
        4. 如果一个测试类有多个test开头方法,则每个方法执行之前都会运行setUp、结束时运行tearDown

     4-defaultTestLoader

    点击查看代码
    说明: 
        使用unittest.defaultTestLoader()类,通过该类下面的discover()方法自动搜索指定目录下指定开头
        的.py文件,并将查找到的测试用例组装到测试套件;
    
    用法:
        test_dir = '../'
        disconver = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
        ——>(test_dir为要指定的目录 ./为当前目录;pattern:为查找的.py文件的格式 ;test:代表文件开头是test,*:通配符,匹配所有)
        
    运行:
        runner=unittest.TextTestRunner()
        runner.run(disconver)

     5-defaultTestLoader与TestSuite区别

    点击查看代码
    1. TestSuite可以添加TestCase中所有test开头的方法和添加指定的test开头方法;
    2. defaultTestLoader搜索指定目录下指定开头.py文件,并添加TestCase内所有test开头的方法,不能指定添加方法;
    
    提示:defaultTestLoader属于TestSuite另一种实现方式;

    使用案例

    结构目录介绍

    unittest_07.py

    点击查看代码
    import unittest
    
    
    def add(a, b):
        return a + b
    
    
    class TestCase01(unittest.TestCase):
        def testcase_01(self):
            print('testcase_01')
            print('1 + 1 =', add(1, 1))
    
        def testcase_02(self):
            print('testcase_02')
            print('6 + 8 =', add(6, 8))
    

    unnittest_08.py

    点击查看代码
    import unittest
    
    from untest_07 import TestCase01
    
    suite = unittest.TestSuite()
    # 以测试用例类里的每一种方法为单位添加
    suite.addTest(TestCase01("testcase_01"))
    suite.addTest(TestCase01("testcase_02"))
    
    runner = unittest.TextTestRunner()
    runner.run(suite)
    
    
    
    -----------------------------------------运行结果---------------------------------------------------------------------------------
    C:UsersXXXXXXScriptspython.exe D:/XXX/自动化测试/案例演示/unittest_08.py
    ..
    ----------------------------------------------------------------------
    Ran 2 tests in 0.000s
    
    OK
    testcase_01
    1 + 1 = 2
    testcase_02
    6 + 8 = 14
    
    Process finished with exit code 0

    unnittest_08.py

    点击查看代码
    import unittest
    
    from untest_07 import TestCase01
    
    suite = unittest.TestSuite()
    
    # 以测试用例类为单位添加
    suite.addTest(unittest.makeSuite(TestCase01))
    
    runner = unittest.TextTestRunner()
    runner.run(suite)
    
    
    -------------------------运行结果---------------------------------------------------
    
    C:UsersXXXXXXScriptspython.exe D:/XXX/自动化测试/案例演示/unittest_08.py
    ..
    ----------------------------------------------------------------------
    Ran 2 tests in 0.000s
    
    OK
    testcase_01
    1 + 1 = 2
    testcase_02
    6 + 8 = 14
    
    Process finished with exit code 0

     defaultTestLoader方法案例

    test01.py

    点击查看代码
    import unittest
    
    
    def add(a, b):
        return a + b
    
    
    class TestCase01(unittest.TestCase):
        def testcase_01(self):
            print('test01.py里面的testcase_01方法')
            print('1 + 1 =', add(1, 1))
    
        def testcase_02(self):
            print('test01.py里面的testcase_02方法')
            print('6 + 8 =', add(6, 8))
    

    test02.py

    点击查看代码
    import unittest
    
    def add(a, b):
        return a + b
    
    class TestCase01(unittest.TestCase):
        def testcase_01(self):
            print('test02.py里面的testcase_01方法')
            print('3 + 1 =', add(3, 1))
    
        def testcase_02(self):
            print('test02.py里面的testcase_02方法')
            print('10 + 7 =', add(10, 7))
    
    
    

    demo_1.py

    点击查看代码
    import unittest
    
    discover = unittest.defaultTestLoader.discover('./cases', pattern="test*.py")
    runner = unittest.TextTestRunner()
    runner.run(discover)
    
    
    
    -------------------运行结果-----------------------------
    
    C:UsersXXXXXXScriptspython.exe D:/XXX/自动化测试/demo_09.py
    ....
    ----------------------------------------------------------------------
    Ran 4 tests in 0.000s
    
    OK
    test01.py里面的testcase_01方法
    1 + 1 = 2
    test01.py里面的testcase_02方法
    6 + 8 = 14
    test02.py里面的testcase_01方法
    3 + 1 = 4
    test02.py里面的testcase_02方法
    10 + 7 = 17
    
    Process finished with exit code 0
    
    坚持,坚持,坚持…… 在你选择不放弃的那一刻, 成功其实已经在向你走近 我们无法得知什么时候会来临 但我们可以选择用自强的双手敲开幸福的门。
  • 相关阅读:
    myeclipse 配置svn
    windows下 将tomcat做成服务,并于oracle后启动
    局部内部类为什么只能访问final局部变量,对于成员变量却可以随便访问?
    使用cmd查看windows端口占用情况,并关闭应用
    生成javadoc文档
    JNI以及JNA使用
    自定义标签-java
    dwr框架应用
    Hadoop生态圈简介
    tomcat之日志记录
  • 原文地址:https://www.cnblogs.com/bronyaa/p/14919936.html
Copyright © 2020-2023  润新知