美文网首页
unittest 官方文档 中文翻译

unittest 官方文档 中文翻译

作者: ugvibib | 来源:发表于2017-11-18 15:49 被阅读201次
    写在之前:
    之所以写这篇文档,有两个原因:
    1、为了更深入了解unittest,本来是打算看源码学习的,但发现,不是一天两天的事,所以就想先把官方文档理解透了再来看源码。
    2、给不想读英文文档的小伙伴一点贡献吧。
    3、本人英文水平有限,有理解错误或者解释有出入的地方,还望多多指教。
    
    官方文档链接:https://docs.python.org/3/library/unittest.html


    26.4.unittest— 单元测试框架
    源码:Lib/unittest/__init__.py

    (如果您已经熟悉了测试的基本概念,您可能会想跳到 断言方法列表)。

    unittest单元测试框架的产生最开始是受JUnit启发的,和其他语言的单元测试框架一样,有着相同的特点。它支持测试自动化、测试中启动和结束代码的共享、测试报告框架的独立性。

    为了实现这些功能,unittest有以下几个重要对象概念:

    test fixture
    一个test fixture 表示执行一个或多个测试前的准备工作,以及执行完成后清理工作。例如:创建临时或代理数据库或目录,或者是一个启动服务器进程。

    test case
    一个test case是一个独立的测试单元,它检查特定输入是否响应特定的输出,unittest提供了一个基本类——TestCase,这个类用于创建一个或多个test case

    test suite
    一个test suite是test cases、或test suites、或者两者的一个集合,它用于把想执行tests放在一起。

    test runner
    一个test runner 是由两部分成分:合理安排tests的执行、提供给user输出结果。runner可以用一个图形界面、文本、或者是一个特殊的值,代表tests执行的结果。

    26.4.1 基本示例

    对于构建和运行tests,unittest提供了非常多的工具。本小节示例只是工具中的一小部分使用,却能满足大部分使用者的需求。

    import unittest
    
    class TestStringMethods(unittest.TestCase):
    
        def test_upper(self):
            self.assertEqual('foo'.upper(), 'FOO')
    
        def test_isupper(self):
            self.assertTrue('FOO'.isupper())
            self.assertFalse('Foo'.isupper())
    
        def test_split(self):
            s = 'hello world'
            self.assertEqual(s.split(), ['hello', 'world'])
            # check that s.split fails when the separator is not a string
            with self.assertRaises(TypeError):
                s.split(2)
    
    if __name__ == '__main__':
        unittest.main()
    

    这是由unittest.TestCase子类创建的testcase。三个不同的tests的名字,均是以“test”开头定义的。这种命名规定,是告诉test runner哪些方法才是要执行的tests。

    每一个test的关键在于,是用assertEqual()来检查是否为预期的测试结果。assertTrue() 和 assertFalse() 是用来验证条件, assertRaises()用来验证是否抛出了特定的异常。这些特定的方法代替原生assert语句,是为了test runner可以收集test结果和生成报告。

    (未完待续...)

    相关文章

      网友评论

          本文标题:unittest 官方文档 中文翻译

          本文链接:https://www.haomeiwen.com/subject/hmmevxtx.html