zoukankan      html  css  js  c++  java
  • python UnitTest

    UnitTest

    单元测试框架,使用时需要导入unitest,所有测试类需要继承unittest.TestCase

    import unittest
    
    class Test_A(unitest.TestCase):
        def test_01(self):
            print('test_01')
    		
    if __name__ == "__main__":
        unittest.main()
    

    命令行执行

    python -m unittest testFile.py
    

    TestFixture

    代表了执行一个或多个测试用例所需要的准备工作,以及所有相关的清除工作。比如创建临时的或者代理的数据库,文件夹或者启动服务器。

    import unittest
    
    class Test_A(unitest.TestCase):
        def setUp(self):
            print('setUp')
        def tearDown(self):
            print('tearDown')
        def test_01(self):
    		print('test_01')
    		
    if __name__ == "__main__":
        unittest.main()
    

    TestCase

    代表了一个单独的单元测试用例,会检查输入参数对应的反馈。unittest提供了一个基类TestCase用来创建测试用例。

    case必须已test开头

    import unittest
    
    class Test_A(unitest.TestCase):
        def test_01(self):
            print('test_01')
    		
    if __name__ == "__main__":
        unittest.main()
    

    使用unitest.skip装饰器族跳过test method或者test class

    @unittest.skip(reason)	# 无条件跳过测试,reason描述为什么跳过测试
    @unittest.skipif(conditition,reason)	# condititon为true时跳过测试: 这里完全可以应用条件去控制用例是否执行了,很灵活
    @unittest.skipunless(condition,reason)	# condition不是true时跳过测试
    

    基本断言方法

    assertEqual(arg1, arg2, msg=None)	# 验证arg1=arg2,不等则fail
    assertNotEqual(arg1, arg2, msg=None)	# 验证arg1 != arg2, 相等则fail
    assertTrue(expr, msg=None)	# 验证expr是true,如果为false,则fail
    assertFalse(expr,msg=None)	# 验证expr是false,如果为true,则fail
    assertIs(arg1, arg2, msg=None)	# 验证arg1、arg2是同一个对象,不是则fail
    assertIsNot(arg1, arg2, msg=None)	# 验证arg1、arg2不是同一个对象,是则fail
    assertIsNone(expr, msg=None)	# 验证expr是None,不是则fail
    assertIsNotNone(expr, msg=None)	# 验证expr不是None,是则fail
    assertIn(arg1, arg2, msg=None)	# 验证arg1是arg2的子串,不是则fail
    assertNotIn(arg1, arg2, msg=None)	# 验证arg1不是arg2的子串,是则fail
    assertIsInstance(obj, cls, msg=None)	# 验证obj是cls的实例,不是则fail
    assertNotIsInstance(obj, cls, msg=None)	# 验证obj不是cls的实例,是则fail
    

    TestSuite

    代表了测试用例及测试套件的集合,用来将测试用例聚合到一起去执行。

    加载器加载

    import unittest
    
    suite = unittest.TestSuite()
    loader = unittest.TestLoader()
    runner = unittest.TextTestRunner()
    
    suite.addTest(loader.loadTestsFromModule(模块名))
    runner.run(suite)
    
    ----------
    unittest.TestLoader().loadTestsFromMoudule(模块名)	# 用的最广
    unittest.TestLoader().loadTestsFromTestCase(类名)
    unittest.TestLoader().loadTestsFromName(方法名)
    unittest.TestLoader().loadTestsFromNames(方法名,复数形式)
    

    自动识别加载测试用例的方法:discover

    import unittest
    
    discover = unittest.defaultTestLoader.discover(start_dir, pattern='test*.py', top_level_dir=None) 
    runner = unittest.TextTestRunner()
    runner.run(discover)
    

    TestRunner

    import unittest
    run = unittest.TextTestRunner()
    run.run(suite)
    

    TestReport

    使用HTMLTestRunner生成测试报告,嫌不好看可以搜索美化版本

    import unittest
    import HTMLTestRunner
    import datetime
    
    if __name__ == '__main__':
        # 定义测试报告的名称(日期+report.html)
        now = datetime.datetime.now()
        format_time = now.strftime('%Y-%m-%d %H:%M:%S')
        report_name = format_time + ' ' + "Report.html"
        # 构造测试套件,使用discover也行
        suite = unittest.TestSuite()
        loader = unittest.TestLoader()
        suite.addTest(loader.loadTestsFromModule(模块名))
        # discover = unittest.defaultTestLoader.discover(start_dir, pattern='test*.py', top_level_dir=None) 
        # 使用discover递归目录时,需要目录为包__init__.py
        
        # 使用执行用例,生成报告
        with open(report_name,'wb') as f:
            runner = HTMLTestRunner.HTMLTestRunner(stream=f, title='自动化测试报告', description='详细测试用例结果', verbosity=0) 
            runner.run(suite)
            # runner.run(discover)
    
  • 相关阅读:
    The Quad
    将OrCAD Capture CIS的设计文件(.dsn)导入到PADS Logic VX.2.3
    OrCAD Capture CIS 16.6 将版本16.6的设计文件另存为版本16.2的设计文件
    Eclipse IDE 添加jar包到Java工程中
    PADS Logic VX.2.3 修改软件界面语言
    切换Allegro PCB Editor
    Allegro PCB Design GXL (legacy) 将brd文件另存为低版本文件
    Allegro PCB Design GXL (legacy) 设置自动保存brd文件
    Could not create an acl object: Role '16'
    windows 下apache开启FastCGI
  • 原文地址:https://www.cnblogs.com/lazy-sang/p/13657323.html
Copyright © 2011-2022 走看看