• samo老师: unittest初始化实例和和执行用例实例


    unittest 初始化方法

     每个方法执行一次

    setUp(self)
    tearDown(self)

    每个类执行一次的方法 要加装修器
    @classmethod
    def setUpClass(cls)
    @classmethod
    def tearDownClass(cls) -> None:


    # !/usr/bin python3                                 
    # encoding: utf-8 -*-                            
    
    # 对于unittest框架来说,他的测试必须以类的形式定义
    import unittest
    
    from lesson1117.operate import FileOperate
    from lesson1117.stu_manager import Manager
    from lesson1117.stu_operate import StusOperate
    from lesson1117.student import Student
    
    
    class TestStuOperateAdd(unittest.TestCase):
    
        # 通常情况下,有可能在每个测试用例执行前需要统一的做前置处理或者后置处理
        # setUp和tearDown里的代码的执行次数是和当前类下的测试用例方法个数一致的
        def setUp(self) -> None:
            #这里是做前置处理的,比如我们要先登录
            print('先完成登录')
            Manager.login('admin','123456')
        def tearDown(self) -> None:
            print('后置处理')
            print('退出系统')
            print('数据清理')
    
    
        # 在这里去实现测试用例
        # 测试方法必须以test开头,一个测试方法就可以认为是一条测试用例
        def test_add_stu(self):
            # 在这里实现目标的测试步骤
            # 正常添加学员
            # 如果数据是写死的,那么每次执行测试都要手动修改
            # 数据准备,可以将原有的数据清除
            StusOperate.del_stu('5')
            stu = Student('5','','17726633','9823874')
            result  = StusOperate.add_stu(stu)
            assert result == '添加成功' # assert的断言一旦失败,那么当前用例剩下的代码不会被执行
            # 函数调用已经完成,如何判断结果呢
            # 判断结果的这个过程,我们叫做断言
            # 手工做的时候打开文件看看这个学员信息是否已经出现
            # 那么代码呢,代码可以读取文件得到结果,判断结果是否正确
            stus_dict = FileOperate.read()
            assert '5' in stus_dict #这就是一个断言,先判断id是否在整体学员的字典中
            # 得到该学员信息,判断各项信息与期望值是否一致
            stu_info = stus_dict['5']
            assert stu_info.name == ''
            assert stu_info.phone == '17726633'
            assert stu_info.qq == '9823874'
        def test_add_stu_id_exist(self):
            # 这是id已存在
            stu = Student('4', '', '17726633', '9823874')
            result = StusOperate.add_stu(stu)
            # id已存在的结果如何判断,修改add_stu函数的返回结果,然后针对返回结果做判断
            assert result == '4已经存在无法添加'
    
    class TestStuOperateChange(unittest.TestCase):
        # 当前类是专门用来测试修改学员的方法的
        # 对于修改了必须先有数据,才能修改
        # 所以我要先准备数据,让这些测试用例公用一条数据
        # 当你的测试类需要进行前置或者后置操作时,可以采用如下的函数
        # 类级别的前置和后置,在当前类下只会一次
        @classmethod
        def setUpClass(cls) -> None:# -> None指的是函数的返回值类型
            # 在这里进行数据准备
            stu = Student('6','沙1','177266331','98238741')
            StusOperate.add_stu(stu)
            print('类初始化')
    
    
        def test_change1(self):
            # 修改姓名
            StusOperate.change_stu('6',name='沙2')
            # 断言
            stus_dict = FileOperate.read()
            stu = stus_dict['6']
            assert stu.name == '沙2'
            pass
        def test_change2(self):
            pass
        @classmethod
        def tearDownClass(cls) -> None:
            # 当前类下所有的测试用例执行完成之后,做数据清理
            StusOperate.del_stu('6')
            print('类后置处理')
    # if __name__ == '__main__':
    #     suite = unittest.TestSuite()
    #     # 这表示将TestStuOperateChange这个类里的test_change1加入到执行集合中
    #     suite.addTest(TestStuOperateChange('test_change1'))
    #     # 这表示将TestStuOperateAdd这个类里的test_add_stu加入到执行集合中
    #     suite.addTest(TestStuOperateAdd('test_add_stu'))
    #
    #     # 执行器
    #     runner = unittest.TextTestRunner()
    #     runner.run(suite)

    执行时如果文件被unitest 执行过,需要调试时就新建一个文件,来调用

    以单条用例执行的方法

    以文件匹配 *_test.py 结尾的文件匹配执行测试用例的方法

    # !/usr/bin python3                                 
    # encoding: utf-8 -*-                            
    import unittest
    
    from lesson1120.stu_operate_test import TestStuOperateChange, TestStuOperateAdd
    
    if __name__ == '__main__':
        # suite = unittest.TestSuite()
        # # 这表示将TestStuOperateChange这个类里的test_change1加入到执行集合中
        # suite.addTest(TestStuOperateChange('test_change1'))
        # # 这表示将TestStuOperateAdd这个类里的test_add_stu加入到执行集合中
        # suite.addTest(TestStuOperateAdd('test_add_stu'))
    
    
        # 指定目录,匹配文件,加载测试用例
        suite = unittest.defaultTestLoader.discover('../lesson1120','*_test.py')
    
        # 执行器
        runner = unittest.TextTestRunner()
        runner.run(suite)
    
        # 需要一个测试报告
  • 相关阅读:
    算法导论:快速排序
    lintcode:打劫房屋 III
    lintcode:打劫房屋II
    lintcode:打劫房屋
    算法导论:二叉搜索树
    算法导论:整齐打印
    砝码称重问题二
    多重背包问题II
    多重背包问题
    lintcode:背包问题II
  • 原文地址:https://www.cnblogs.com/zhenyu1/p/15580496.html
Copyright © 2020-2023  润新知