zoukankan      html  css  js  c++  java
  • unittest -官网文档学习笔记-基本知识

    官网文档地址如下:
    https://docs.python.org/2.7/library/unittest.html?highlight=unittest#test-cases

    unittest, 又叫PyUnit, 支持测试自动化,共享测试setup(setUp()方法)和shutdown(tearDown()方法)代码,可以组合测试用例为测试组件(suite)。

    一些重要的概念:

    test fixture:主要是setUp和cleanup, setUp用于一些初始化操作,cleanup主要用于用例执行完以后,将环境恢复到初始状态。比如我们可以将测试用例分组,相似的可以在同一个类下,共享一样的setup和cleanup,比如说执行前打开页面,创建用户,创建临时数据库等;执行用例后删除用户,关闭页面,等等。

    只要setUp()执行了,不管test case是否执行,执行是否沟通,tearDown()都会执行。

    test case: 最小测试单元。unittest提供类:TestCase

    test suite:是测试用例或者test suite的组合。unittest提供类:TestSuite

    test runner: 测试执行和输出。该对象提供一个方法:run(),可以接受TestCase或者TestSuite作为参数,返回测试结果。类:TestResult提供给用户作为结果对象。unittest提供类TextTestRunner。

    举例练习如下:

    import unittest
    class TestPY(unittest.TestCase):
        #def setUp(self):
        
        #def tearDown(self):
        
        def test_upper(self):
            self.assertEqual('foo'.upper(),'FOO')
            
        def test_isupper(self):
            self.assertTrue('FOO'.isupper())
                  
    if __name__=="__main__":
        unittest.main()

    结果:

    Ran 2 tests in 0.000s
    
    OK

    代码最后两行替换为:

    suite = unittest.TestLoader().loadTestsFromTestCase(TestPY)
    unittest.TextTestRunner(verbosity=2).run(suite)

    结果:

    test_isupper (__main__.TestPY) ... ok
    test_upper (__main__.TestPY) ... ok
    
    ----------------------------------------------------------------------
    Ran 2 tests in 0.000s
    
    OK

    只执行第一条case,最后两行代码更新如下:

    注意:TestCase类有一个参数,MethodName=runTest;所以参数里要给出method name。

    testcase = TestPY('test_upper')
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(testcase)

    结果:

    est_upper (__main__.TestPY) ... ok
    
    ----------------------------------------------------------------------
    Ran 1 test in 0.000s
    
    OK

    Command-Line interface:

    格式如下:

    python -m unittest test_module1 test_module2
    python -m unittest test_module.TestClass
    python -m unittest test_module.TestClass.test_method

    帮助:

    python -m unittest -h

    Test Discovery:

    TestLoader.discover()

    -v: verbose
    -s: start directory(. default)
    -p: pattern,常用(test*.py by default)

    python -m unittest discover -s project_directory -p '*_test.py'
    python -m unittest discover project_directory '*_test.py'

    Test Suite练习:

    原始练习代码最后两行可更新为:

    suite = unittest.TestSuite()
    suite.addTest(TestPY('test_upper'))
    suite.addTest(TestPY('test_isupper'))
    unittest.TextTestRunner().run(suite)

    Skipping tests and expected failures:

    Skipping tests: 用于skip某个test方法或者类。

    使用方法如下:

    class MyTestCase(unittest.TestCase):
    
        @unittest.skip("demonstrating skipping")
        def test_nothing(self):
            self.fail("shouldn't happen")
    
        @unittest.skipIf(mylib.__version__ < (1, 3),
                         "not supported in this library version")
        def test_format(self):
            # Tests that work for only a certain version of the library.
            pass
    
        @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
        def test_windows_support(self):
            # windows specific testing code
            pass
    @unittest.skip("showing class skipping")
    class MySkippedTestCase(unittest.TestCase):
        def test_not_run(self):
            pass
  • 相关阅读:
    网络请求侦听工具
    再转动画实现
    转如何解决EXC_BAD_ACCESS错误
    关于Iphone开发得一些案例及常用知识(转过来的参考用)
    用uiwebview打开pdf,word,excel
    转 iphone开发资料汇总(很多实用的东东)
    设置uiview背景图的方法之一
    给状态条加上图标的代码
    xcode 4 下找EXC_BAD_ACCESS错误原因
    linux&unix常用命令
  • 原文地址:https://www.cnblogs.com/isister/p/4638743.html
Copyright © 2011-2022 走看看