zoukankan      html  css  js  c++  java
  • unittest快速使用方法

    1. 基本使用
    
    import unittest
    
    class Test(unittest.TestCase): 
        
        @classmethod
        def setUpClass(cls):
            print("这是类方法前置条件")
    
        @classmethod
        def tearDownClass(cls):
            print("这是类方法后置条件")
    
    
        def setUp(self):
            self.number=input('Enter a number:')
            self.number=int(self.number)
    
        def test_case1(self):
            print self.number
            self.assertEqual(self.number,10,msg='Your input is not 10')
            
        def test_case2(self):
            print self.number
            self.assertEqual(self.number,20,msg='Your input is not 20')
    
        @unittest.skip('跳过用例3')
        def test_case3(self):
            print self.number
            self.assertEqual(self.number,30,msg='Your input is not 30')
    
        def tearDown(self):
            print 'Test over'
            
    '''
    1:
    '''
    if __name__=='__main__':
        unittest.main()
    
    '''
    2:
        suite=unittest.TestSuite()
        suite.addTest(Test('test_case2'))
        suite.addTest(Test('test_case1'))
        runner=unittest.TextTestRunner()
        runner.run(suite) 
    '''
    '''
    3:
        test_dir = './'
        discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
        runner=unittest.TextTestRunner()
        runner.run(discover)   
    '''
    
    1. 通过suite.addTest加载case
    
    import unittest
    from test_case import test_baidu
    from test_case import test_youdao
    
    
    if __name__=='__main__':
    
        suite = unittest.TestSuite()
        suite.addTest(test_baidu.BaiduTest('test_baidu'))
        suite.addTest(test_youdao.YoudaoTest('test_youdao'))
    
        runner = unittest.TextTestRunner()
        runner.run(suite)
    
    #或者
    if __name__=='__main__':
    
        suite = unittest.TestSuite()
        tests = [Test3("test_add"), Test3("test_minus"), Test3("test_multi"), Test3("test_divide")]
        tests2 = [Test32("test_add"), Test32("test_minus"), Test32("test_multi"), Test32("test_divide")]
        suite.addTests(tests)
        suite.addTests(tests2)
    
        runner = unittest.TextTestRunner()
        runner.run(suite)
    
    
    1. 通过defaultTestLoader.discover加载case
    if __name__ == "__main__":
        suites = unittest.defaultTestLoader.discover('../testcase', 'test_*.py')
        runner= unittest.TextTestRunner()
        runner.run(suites)
    
    
    1. 通过TextTestRunner执行case
    if __name__ == "__main__":
    
        now = time.strftime("%Y-%m-%d %H_%M_%S") 
        test_reports_address = '../report'    
        filename = '../report/' + now + 'report.html'  
        fp = open(filename, 'wb')
    
        suites = unittest.defaultTestLoader.discover('../testcase', 'test_*.py')
        runner= unittest.TextTestRunner()
        runner.run(suites)
    
    
    1. 通过HTMLTestRunner执行case
    if __name__ == "__main__":
    
        now = time.strftime("%Y-%m-%d %H_%M_%S") 
        test_reports_address = '../report'    
        filename = '../report/' + now + 'report.html'  
        fp = open(filename, 'wb')
    
        suites = unittest.defaultTestLoader.discover('../testcase', 'test_*.py')
        runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'title')
        runner.run(suites)
    
    
    1. 直接添加测试类到测试套件中
    from unittest import TestLoader
    from test1 import myunittest
    
    if __name__ == '__main__':
        suite = unittest.TestSuite()
        loader = TestLoader()
        test_cases1 = unittest.TestLoader().loadTestsFromTestCase(myunittest)
        # 参数是一个类,而这个类必须是unittest.TestCase的子类或者孙类
        suite.addTests(test_cases1)
        runner = unittest.TextTestRunner(verbosity=2)
        runner.run(suite)
    
    
    1. 直接加载一个模块到测试套件中,如果这个模块中有多个类,则会把所有的类的测试案例加载到测试套件中
        from unittest import TestLoader
        loader = TestLoader()
    
        #导入方式1
        import run2
        cases1 = unittest.TestLoader().loadTestsFromModule(run2)
    
        #导入方式2
        # cases1 = unittest.TestLoader().loadTestsFromModule(__import__('run2'))
    
        suite = unittest.TestSuite()
        suite.addTest(cases1)
        runner = HTMLTestRunner.HTMLTestRunner(stream=fp)
        runner.run(suite)
    
    
    
    1. 输出日志的控制
    if __name__ == '__main__':
      
        suite = unittest.TestSuite()
        tests = [Test3("test_add"), Test3("test_minus"), Test3("test_multi"), Test3("test_divide")]
        suite.addTests(tests)
        # 输出信息到txt文件中
        with open('UnittestTextReport.txt', 'a') as  f:
            runner = unittest.TextTestRunner(stream=f, verbosity=2)
            runner.run(suite)
    
    
    1. 忽略执行案例
    #1、无条件跳过该案例,用该装饰器修饰要执行的案例,则该案例会被忽略不执行
        @unittest.skip("do not exec")
        # 无条件跳过执行该案例
        def test_add(self):
            self.assertEqual(3,func.add(1,2))
    
    
    #2、满足某个条件才跳过该案例
    @unittest.skipIf(4 > 3,"2 > 3 do not exec")
        # 满足某个条件才跳过执行
        def test_minus(self):
            self.assertEqual(4,func.minus(5,1))
    
    
    
    1. 断言
            self.assertEqual(3,func.add(1,2))
            # 判断是否相等
            
            self.assertNotEqual()
            # 判断是否不等于
            
            self.assertTrue()
            # 判断布尔值是否为True
            
            self.assertFalse()
            # 判断布尔值是否为False
            
            self.assertIs()
            # 判断类型是否相同
            
            self.assertIsNot()
            # 判断类型是否不同
            
            self.assertIsNone()
            # 判断是否为None
            
            self.assertIsNotNone()
            # 判断是否不为None
            
            self.assertIn()
            # 判断在某个范围内
            
            self.assertNotIn()
            # 判断是否不在某个范围内
            
            self.assertIsInstance()
            # 判断是否为某个类的实例
            
            self.assertNotIsInstance()
    
    

    参考:
    https://www.cnblogs.com/bainianminguo/p/11616526.html

    1. 待加入
    
    
    
  • 相关阅读:
    [转] 浅谈 C++ 中的 new/delete 和 new[]/delete[]
    [转] dpkg-deb命令
    [转] 将DOS格式文本文件转换成UNIX格式
    STM32与FreeRTOS实现低功耗
    设置Beyond Compare 为 Git 默认的比较工具
    [转]Linux进程间通信——使用消息队列
    还你一个自由、干净的网络环境
    Linux下的Hello world
    Cortex-M3中C与汇编的交互
    数据结构25:矩阵转置算法(三元组顺序表)
  • 原文地址:https://www.cnblogs.com/amize/p/13251619.html
Copyright © 2011-2022 走看看