• Unittest学习笔记


    Unittest核心要素:

    1. 测试用例 TestCase
    2. 测试套件 TestSuite
    3. 测试执行 TestRunner
    4. 批量执行测试用例 TestLoader

    使用Unittest编写用例,必须遵守以下规则:

    1. 测试文件必须先import unittest

    2. 测试类必须继承unittest.TestCase

    3. 测试方法必须以test_开头

    4. 测试类必须要有unittest.main()方法

    Unittest用例前置后置:

    • Unittest提供了setUp/tearDown方法,每个用例运行前、结束后运行一次。
    • Unittest提供了setUpClass和tearDownClass类方法,使用@classmethod注释,用例执行前、结束后,只运行一次。

    断言

    Unittest提供了断言的方式判断用例有没有成功,包括assertEqual(a, b)assertIn(a, b)assertTrue(x)assertFalse(x)等方法。

    实例1

    import unittest
    
    from Unni_study.mathfunc import add, minus, multi, divide
    
    class TestMathfunc(unittest.TestCase):
        @classmethod
        def setUpClass(cls) -> None:
            print('class')
        @classmethod
        def tearDownClass(cls) -> None:
            print('tclass')
    
        # 每个测试方法执行之前都会执行(初始化)
        def setUp(self) -> None:
            print("before")
        # 每个测试方法执行之后都会执行(释放)
        def tearDown(self) -> None:
            print("after")
    
        # 测试方法必须以“test_”开头
        def test_add(self):
            self.assertEqual(3, add(1, 2))
            # self.assertEqual(3, add(2,2))
    
        def test_minus(self):
            self.assertEqual(-1, minus(1, 2))
            # self.assertEqual(2, minus(2, 2))
    
        def test_multi(self):
            # self.skipTest("multi")
            self.assertEqual(2, multi(1, 2))
    
        def test_divide(self):
            # self.skipTest("跳过")
            self.assertEqual(2, divide(2, 1))
            self.assertEqual(2, divide(5, 2))
    
        # 测试类必须有unittest.main()方法
        if __name__ == '_main_':
            unittest.main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    实例2,结合WebDriver

    import unittest
    import time
    
    from selenium import webdriver
    from selenium.webdriver.common import by
    
    
    class forTest(unittest.TestCase):
        # 测试用例初始化
        # 打开谷歌浏览器,进入网页
        def setUp(self) -> None:
            self.dr = webdriver.Chrome()
            self.dr.get('https://www.baidu.com/')
            self.dr.maximize_window()
    
        # 测试用例释放
        # 等待3s,关闭浏览器
        def tearDown(self) -> None:
            time.sleep(3)
            self.dr.quit()
    
        def test_1(self):
            pass
            self.dr.find_element(by.By.XPATH, "//*[@id = 'kw']").send_keys('战狼')
            self.dr.find_element(by.By.XPATH, "//*[@id = 'su']").click()
    
    
    if __name__ == '__main__':
        unittest.main()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
  • 相关阅读:
    vue 报Cannot read properties of undefined (reading ‘clientHeight‘)
    JavaScript 中基本数据类型和引用数据类型是如何存储的
    404. 左叶子之和
    “魔盗”窃密木马(FakeCDR)研究
    ES6详解 快速上手!
    effective c++ 笔记 条款26-31
    超高并发下,Redis热点数据风险破解
    影响MySql 服务性能最重要的两个参数。
    深度学习二三事-计算机视觉目标检测回顾
    经典CAN2.0 DBC快速切换为CANFD DBC
  • 原文地址:https://blog.csdn.net/qq_39181839/article/details/126288981