当前位置 : 主页 > 网络安全 > 测试自动化 >

selenium.UnitTest框架()

来源:互联网 收集:自由互联 发布时间:2021-06-19
UnitTest介绍: unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例

UnitTest介绍:

     unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。

  UnitTest框架的优点:

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

  使用UnitTest框架需要注意的地方:

  1. UnitTesrt框架是python自带库不需要下载,使用时import即可
  2. 新建一个测试类是需要继承unittest.TestCase类

 

UnitTest框架使用:

  TestCase类中定义的几个特殊方法:

  1. setUp():每个测试方法运行前运行,测试前的初始化工作。
  2. tearDown():每个测试方法运行结束后运行,测试后的清理工作。
  3. setUpClass():所有的测试方法运行前运行,单元测试前期准备,必须使用 @classmethod装饰器进行修饰,setUp()函数之前执行,整个测试过程只执行一次。比如:实例化浏览器、浏览器最大化、隐式等待设置
  4. tearDownClass():所有的测试方法运行结束后执行,单元测试后期清理,必须使用 @classmethod装饰器进行修饰,tearDown()之后执行,整个测试过程只执行一次。

执行用例:

   将功能相关的测试用例组合到一起成为一个测试用例集,unittest框架中通过TestSuite类来组装所有的测试用例集。(也就是说,使用测试集合可                  以同时执行同一个py文件中的多个测试用例类)

  1. TestLoader类:测试用例加载器,返回一个测试用例集合
  2. loadTestsFromTestCase类:根据给定的测试类,获取其中的所有以‘test’开头的测试方法,并返回一个测试集合
  3. TestSuite类:组装测试用例的实例,支持添加和删除用例,最后将传递给test runner进行测试执行
  4. TextTestRunner类:测试用例执行类,其中Text 表示以文本形式输出测试结果

 

运用以上所述做个练习:

 

# 导入unittest模块
import unittest


# 继承unittest.TestCase类
class NumberTest(unittest.TestCase):

    def setUp(self):
        # 在每个测试用例执行前都需要键盘输入一个数字
        self.number = input("-->请输入数字")
        # 将每个接受的数字转换成int
        self.number = int(self.number)

    # Unittest默认运行以test开头的测试用例
    def test_a(self):
        print(self.number)
        # 使用unittest.TestCase类下面的断言方法对测试结果的判断
        self.assertEqual(self.number, 10, msg="输入的数字不是10")

    # @unittest.skip(‘跳过用例b‘)
    def test_b(self):
        print(self.number)
        self.assertEqual(self.number, 20, msg="输入的数字不是20")

    def test_c(self):
        print(self.number)
        self.assertEqual(self.number, 30, msg="输入的数字不是30")

    # 在每个测试用例执行完成后都打印"结束"
    def tearDown(self):
        print("结束")


class LoaderTest(unittest.TestCase):

    def test_d(self):
        print("测试LoaderTest")


if __name__ == "__main__":
    # # 执行用例的方法:unittest.main()
    # # 搜索该模块下所有以test开头的测试用例方法,并按照ASCLL码排序执行用例。
    # unittest.main()

    ‘‘‘
    # 执行用例的方法:测试套件
    suite = unittest.TestSuite()

    # 一次添加多个用例
    testlist = [NumberTest("test_a"), NumberTest("test_b")]
    suite.addTests(testlist)

    # # 一次添加一个用例
    # suite.addTest(NumberTest("test_a"))
    # suite.addTest(NumberTest("test_b"))

    runner = unittest.TextTestRunner()
    runner.run(suite)
    ‘‘‘  # 测试套件运行测试类中的测试方法

    ‘‘‘
    # 将两个测试类实例化
    testCase = unittest.TestLoader().loadTestsFromTestCase(NumberTest)
    testCase01 = unittest.TestLoader().loadTestsFromTestCase(LoaderTest)
    
    # 将实例对象加入suite
    suite = unittest.TestSuite([testCase, testCase01])
    
    # 运行suite
    unittest.TextTestRunner().run(suite)
    ‘‘‘  # 测试套件运行测试类
网友评论