• Unittest框架


    import unittest
    from assertpy import assert_that
    
    """
    Testcase:
    
    一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),
    执行测试代码 (run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整
    的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。
    
    Test suite:
    
    多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。
    
    Test runner:
    
    是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。
    
    TestLoader:
    
    是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,
    然后add到TestSuite中,再返回一个TestSuite实例。
    
    Test fixture:
    
    对一个测试用例环境的搭建和销毁,是一个fixture,通过覆盖 TestCase的setUp()和tearDown()方法来实现。
    这个有什么用呢?比如说在这个测试用例中需要访问数据库,那么可以在setUp() 中建立数据库连接以及进行一些初始化,
    在tearDown()中清除在数据库中产生的数据,然后关闭连接。注意tearDown的过程很重要,要为以后的 TestCase留下一
    个干净的环境。关于fixture,还有一个专门的库函数叫做fixtures,功能更加强大。
    
    unittest.skip():
    
    装饰器,当运行用例时,有些用例可能不想执行等,可用装饰器暂时屏蔽该条测试用例。
    一种常见的用法就是比如说想调试某一个测试用例,想先屏蔽其他用例就可以用装饰器屏蔽。
    
    使用unittest编写python的单元测试代码,包括如下几个步骤:
    
    1、编写一个python类,继承 unittest模块中的TestCase类,这就是一个测试类
    
    2、在上面编写的测试类中定义测试方法(这个就是指的测试用例),每个方法的方法名要求以 test 打头,没有额外的参数。 
    在该测试方法中 调用被测试代码,校验测试结果,TestCase类中提供了很多标准的校验方法,如 最常见的assertEqual。
    这里使用assertpy
    
    3、执行 unittest.main() ,该函数会负责运行测试,它会实例化所有TestCase的子类,并运行其中所有以test打头的方法。
    """
    
    
    class TestCase(unittest.TestCase):
        @classmethod
        def setUpClass(cls):
            print('前提条件,只会执行一次,比如登录获取cookie')
    
        @classmethod
        def tearDownClass(cls) :
            print('结束测试,做一些清理工作,执行一次')
    
        def setUp(self) -> None:
            print('每一个test执行 前都会执行的')
    
        def tearDown(self) -> None:
            print('每一个test执行后都会执行')
    
        def test_1(self):
            print('1111')
            assert_that(2).is_equal_to(2)
    
        def test_2(self):
            print('2222')
            assert_that(2, description='ERROR').is_equal_to(4)
    
        @unittest.skip("ssss")
        def test_3(self):
            print('333')
            assert_that(2, description="错误").is_equal_to(3)
    
    
    if __name__ == '__main__':
        suit1 = unittest.TestSuite()
        suit1.addTest(TestCase('test_2'))
        suit1.addTest(TestCase('test_1'))
        suit1.addTest(TestCase('test_3'))
        runner = unittest.TestRunner()
        runner.run(suit1)
  • 相关阅读:
    sgu209:Areas(计算几何)
    altium designer电气符号和包的常用元素
    wxWidgets谁刚开始学习指南(5)——使用wxSmith可视化设计
    zoj 3820 Building Fire Stations(二分法+bfs)
    iOS 注册或登录页面(UILable,UITextField,UIButton)
    [ACM] POJ 2689 Prime Distance (筛选范围大素数)
    数字签名和数字证书技术简介(两)
    [Node] Using dotenv to config env variables
    [TypeStyle] Compose CSS classes using TypeStyle
    [Node] Use babel-preset-env with Native Node Features and Also Use Babel Plugins
  • 原文地址:https://www.cnblogs.com/tarzen213/p/12651196.html
Copyright © 2020-2023  润新知